개요다른 컬렉션의 일치하는 필드를 기준으로 JSON 배열 필드를 집계하려면 먼저 두 개의 컬렉션을 생성하고 문서를 추가한 뒤, $lookup 연산자를 사용하여 매칭을 수행해야 합니다.1단계: 첫 번째 컬렉션 생성 및 문서 삽입먼저 컬렉션을 만들고 문서를 삽입합니다.> db.demo101.insertOne( ... { _id : 1, Details : [ { PId : 200 }, { PId : 201 }, { PId : 201 } ] } ... ) { acknowledged : true, insertedId : 1 }2단계:
MongoDB에서 배열의 마지막 요소(객체)를 조회하려면 aggregate() 메서드와 함께 $arrayElemAt 연산자를 활용하면 됩니다. 이 글에서는 실제 예제를 통해 배열의 마지막 객체를 쿼리하는 방법을 단계별로 살펴보겠습니다.1. 샘플 컬렉션 생성하기먼저 문서가 포함된 컬렉션을 생성합니다. 아래 예제에서는 학생 정보가 담긴 Details 배열과 Details1 배열을 가진 문서를 삽입합니다.> db.demo103.insertOne({ Details : [ { StudentId : 101, Details
MongoDB에서 배열 항목에 $dateToString 적용하기MongoDB에서 배열(array) 내부에 저장된 날짜 값을 특정 형식의 문자열로 변환해야 할 때가 있습니다. 이 경우 aggregate() 메서드와 $map 연산자를 조합하면 배열의 각 요소에 $dateToString을 손쉽게 적용할 수 있습니다.1. 샘플 데이터 준비하기먼저 예제에 사용할 컬렉션을 생성하고 문서를 하나 삽입합니다. 아래 문서에는 애플리케이션 이름과 고객 정보가 담긴 Details 배열이 포함되어 있으며, 배열 요소 안에 마감일(Deadline) 날짜
MongoDB에서 배열 요소 조건부 삽입·업데이트 처리하기 배열 내부에 특정 조건을 만족하는 요소가 없으면 새로 삽입하고, 있으면 기존 값을 업데이트해야 하는 상황이라면 MongoDB의 bulkWrite() 메서드를 활용할 수 있습니다. 이 메서드는 여러 개의 쓰기 작업을 하나의 요청으로 묶어 한 번에 처리할 수 있어, 조건에 따라 분기되는 삽입/업데이트 로직을 구현하기에 적합합니다. 아래 예제에서는 학생 성적 정보를 담은 배열을 대상으로, 여러 조건(Marks2, Marks3)을 조합해 요소의 존재 여부를 판단한 뒤 삽입 또는 업
MongoDB 쿼리에서 변수 사용하기 MongoDB 쿼리에서 변수를 활용하면 반복적으로 사용하는 조건 값을 재사용할 수 있어 코드의 가독성과 유지보수성이 크게 향상됩니다. MongoDB 셸에서는 var 키워드를 사용해 손쉽게 변수를 선언할 수 있습니다. 아래에서 실제 예제를 통해 단계별로 살펴보겠습니다. 1. 샘플 데이터 생성 먼저 문서(document)를 삽입하여 데모용 컬렉션을 생성합니다. > db.demo107.insertOne({Name:Chris}); { acknowledged : true, inserte
MongoDB에서 두 개의 키(필드) 조합이 동일한 중복 문서를 제거하려면 aggregate() 메서드를 활용하면 됩니다. 이 글에서는 예제 컬렉션을 만들고, 두 개의 키를 기준으로 중복을 걸러내는 집계 쿼리를 단계별로 살펴보겠습니다.예제 컬렉션 생성먼저 demo108이라는 이름의 컬렉션에 문서를 삽입합니다. Value1 값이 같더라도 Value2 값이 다르면 별개의 문서로 취급됩니다.> db.demo108.insertOne({Value1:23,Value2:24}); { acknowledged : true, inse
MongoDB에서 배열 안에 중첩된 JSON 객체의 특정 데이터만 추출하고 싶을 때가 있습니다. 이럴 때 findOne() 메서드와 $elemMatch 연산자를 함께 사용하면 원하는 중첩 데이터만 효율적으로 가져올 수 있습니다. 이번 글에서는 실제 예제를 통해 그 과정을 단계별로 살펴보겠습니다. 1. 예제 컬렉션 생성하기 먼저 테스트용 컬렉션에 문서를 삽입합니다. 아래 예제는 학생 정보와 함께 과목(Subjects) 배열, 그리고 각 과목마다 강사 정보(InstructorDetails)가 중첩된 구조입니다. > db.demo1
MongoDB에서 기존 데이터를 수정하려면 update() 메서드를 사용합니다. 이 글에서는 실제 예제를 통해 컬렉션을 만들고, 문서를 삽입한 뒤, 특정 문서의 필드 값을 변경하는 전체 과정을 단계별로 살펴보겠습니다. 1단계: 컬렉션 생성 및 문서 삽입 먼저 insertOne() 메서드를 사용해 demo110 컬렉션에 세 개의 문서를 삽입합니다. > db.demo110.insertOne({Name:Chris}); { acknowledged : true, insertedId : ObjectId(5e2eeb949fd5
MongoDB에서 배열 필드 내부의 여러 조건을 동시에 만족하는 단일 요소를 기준으로 문서를 필터링하려면 $elemMatch 연산자를 사용해야 합니다. 일반적인 쿼리 조건은 각 조건이 서로 다른 배열 요소에 걸쳐 매칭될 수 있지만, $elemMatch는 하나의 배열 요소 안에서 모든 조건이 동시에 충족되도록 보장합니다.예제 컬렉션 생성먼저 직원 정보를 담은 배열을 포함하는 문서들로 컬렉션을 생성해 보겠습니다.> db.demo87.insertOne( ... { ... id:101, ... Deta
MongoDB에서 $regex는 기본적으로 정적 문자열이나 정규식 리터럴만 받을 수 있기 때문에, 다른 필드의 값을 직접 패턴으로 참조할 수 없습니다. 하지만 집계 파이프라인에서 $expr과 함께 $indexOfCP 연산자를 활용하면 이러한 제한을 우회할 수 있습니다. 이 글에서는 실제 예제를 통해 그 방법을 살펴보겠습니다. 테스트 데이터 생성하기 먼저 예제 문서들을 담은 컬렉션을 생성해 보겠습니다. > db.demo88.insertOne( ... { ... Name: Chris, ... P
MongoDB에서 중첩된(nested) 문자열 배열을 조회하려면 find() 메서드 안에서 점 표기법(dot notation)을 사용하면 됩니다. 이 방식은 문서 내부에 포함된 하위 필드나 배열 요소에 직접 접근할 수 있게 해주는 MongoDB의 핵심 기능 중 하나입니다.실제 예제를 통해 확인해 보겠습니다. 먼저 컬렉션을 생성하고 문서를 삽입합니다.> db.demo89.insertOne( ... { id: 101, Details: [ { Name: "Chris", Marks: 45 }, { Name: &quo
MongoDB에서 배열 요소가 특정 단어의 부분 문자열인 문서 찾기배열 내 문자열 중 하나라도 특정 단어의 부분 문자열(substring)에 해당하는지 확인하려면 MongoDB의 aggregate() 메서드를 활용해야 합니다. 이 방식은 $match, $expr, $map, $indexOfBytes 등의 연산자를 조합하여 배열의 각 요소를 유연하게 검사할 수 있습니다.1. 샘플 컬렉션 생성 및 문서 삽입먼저 데모용 컬렉션을 만들고 문서를 삽입해 보겠습니다.> db.demo90.insertOne( ... {words: [john
MongoDB에서 특정 날짜와 같거나 그 이후의 레코드를 조회하려면 $gte(greater than equal, 크거나 같음) 연산자를 사용하면 됩니다. 이 연산자는 지정한 값과 일치하는 항목은 물론, 그보다 큰 모든 값을 조건에 포함하기 때문에 날짜 범위 검색에 매우 유용합니다.먼저 실습용 컬렉션을 만들고 문서를 삽입해 보겠습니다.1. 컬렉션 생성 및 문서 삽입> db.demo91.insertOne({ArrivalDate:new ISODate(2020-01-10)}); { acknowledged : true, in
MongoDB에서 저장된 날짜 값을 타임스탬프(밀리초 단위의 숫자 값)로 변환하려면 aggregate() 집계 파이프라인과 $toLong 연산자를 활용할 수 있습니다. ISODate 형식으로 저장된 날짜는 내부적으로 유닉스 에포크(Epoch) 이후 경과한 밀리초 값으로 변환됩니다.1. 샘플 컬렉션 생성먼저 실습에 사용할 컬렉션을 만들고 문서를 삽입해 보겠습니다.> db.demo93.insertOne({UserName:Chris,ArrivalDate:new ISODate(2020-10-01)}); { acknowledge
배열 내에서 특정 조건에 맞는 요소를 찾아 값을 추가하려면 MongoDB의 $push 연산자와 함께 $elemMatch, 그리고 위치 연산자($)를 활용하면 됩니다. 이 글에서는 실제 예제를 통해 단계별로 살펴보겠습니다.1. 테스트용 컬렉션 생성먼저 insertOne() 메서드를 사용해 예제 문서를 담은 컬렉션을 생성합니다.> db.demo94.insertOne( ... { ... Details : [ ... { ... Name : Chris, ... Subject : [
MongoDB에서 문자열을 ObjectId로 변환하는 방법MongoDB를 사용하다 보면 문자열(String) 형태로 저장된 값을 ObjectId 타입으로 변환해야 하는 경우가 종종 있습니다. 예를 들어, 애플리케이션에서 ObjectId를 문자열로 저장한 후 이를 다시 ObjectId로 변환하여 참조나 조인 작업에 활용할 때 유용합니다. 이럴 때 집계 파이프라인의 $toObjectId 연산자를 사용하면 간단하게 해결할 수 있습니다.1. 컬렉션 생성 및 문서 삽입먼저 데모용 컬렉션을 생성하고, 문자열 형태의 ID 값을 가진 문서를 삽입
MongoDB에서 배열 내부의 필드 합계 구하기MongoDB에서 배열 안에 포함된 필드 값들의 합계를 계산하려면 집계 파이프라인(Aggregation Pipeline)에서 $sum 연산자를 사용하면 됩니다. 먼저 예제로 사용할 컬렉션과 문서를 생성해 보겠습니다.> db.demo96.insertOne(... {...... Name : Chris,... Details : [... {... Marks:67... },... {... Marks:33
MongoDB에서 배열 객체 내 요소의 속성 값 증가시키기MongoDB에서 배열(Array) 안에 포함된 특정 요소의 속성 값을 증가시키려면 update() 메서드와 $inc 연산자를 함께 사용하면 됩니다. 이때 위치 연산자($)를 활용하면 조건에 일치하는 배열 요소만 정확하게 찾아 값을 수정할 수 있습니다.이번 글에서는 실제 예제를 통해 배열 객체 내 요소의 속성 값을 증가시키는 전체 과정을 단계별로 살펴보겠습니다.1. 샘플 컬렉션 생성하기먼저 insertOne() 메서드를 사용하여 문서를 포함하는 컬렉션을 생성합니다. 아래 예제
개요MongoDB에서 다단계(multilevel) $group 연산을 구현하려면 애그리게이션 파이프라인(aggregate)을 활용해야 합니다. 이 글에서는 실제 예제를 통해 여러 단계의 $group을 조합하여 데이터를 계층적으로 그룹화하고 요약하는 방법을 살펴보겠습니다.1단계: 컬렉션 생성 및 문서 삽입먼저 demo76 컬렉션에 샘플 문서들을 삽입해 보겠습니다.> db.demo76.insertOne({ Name:"Chris","Age" : 21, "CountryName" :
MongoDB에서 저장된 객체(도큐먼트)를 수정하려면 update() 메서드를 사용하면 됩니다. 이 글에서는 실제 예제를 통해 MongoDB 객체를 업데이트하는 과정을 단계별로 살펴보겠습니다.1. 컬렉션 생성 및 도큐먼트 삽입먼저 insertOne() 메서드를 사용해 demo77이라는 컬렉션에 도큐먼트를 하나 삽입합니다.> db.demo77.insertOne({Details : { Score : 78 } }); { acknowledged : true, insertedId : ObjectId(5e2bd6f371bf01