MongoDB에서 배열 필드의 특정 요소만 투영하는 방법배열 필드에 담긴 여러 요소 중에서 조건에 맞는 특정 요소만 골라서 조회하고 싶다면, 집계 파이프라인의 $project 단계와 $filter 연산자를 함께 사용하면 됩니다. 이번 글에서는 실제 예제를 통해 그 과정을 단계별로 살펴보겠습니다.1단계: 샘플 컬렉션 생성하기먼저 insertOne() 메서드를 사용해 문서가 포함된 컬렉션을 생성합니다.> db.demo355.insertOne({id:101,details:[{Name:Chris,isMarried:1},{Name:Da
MongoDB 문서 유효성 검사란?MongoDB는 스키마가 유연한 NoSQL 데이터베이스이지만, createCollection() 메서드에 validator 옵션을 지정하면 컬렉션 수준에서 문서의 구조와 필드 타입을 강제할 수 있습니다. 이를 통해 잘못된 형식의 데이터가 저장되는 것을 사전에 차단할 수 있습니다.1. validator를 적용한 컬렉션 생성다음 쿼리는 FirstName 필드가 반드시 존재하고 문자열(string) 타입이어야 한다는 조건을 가진 컬렉션을 생성합니다.> db.createCollection(demo35
MongoDB에서 NumberInt()는 값을 명시적으로 32비트 정수(int) 타입으로 저장할 때 사용하는 함수입니다. 일반적인 숫자 리터럴은 기본적으로 double 타입으로 저장되기 때문에, 정확한 데이터 타입 매칭이 필요한 경우 NumberInt()를 활용하면 됩니다.이번 글에서는 NumberInt()로 저장된 필드 값을 조건으로 특정 문서를 조회하는 방법을 예제와 함께 살펴보겠습니다.1. 샘플 컬렉션 생성먼저 NumberInt()를 사용해 문서를 포함하는 컬렉션을 생성합니다.> db.demo357.insertOne( .
네, MongoDB에서 $match는 집계(aggregate) 쿼리 내에서 정상적으로 작동합니다. $match는 집계 파이프라인에서 특정 조건에 맞는 문서만 필터링하는 역할을 하며, 일반 find() 쿼리의 조건과 유사한 방식으로 사용됩니다.실제 동작 과정을 이해하기 위해 문서가 포함된 컬렉션을 먼저 생성해 보겠습니다.1. 컬렉션 생성 및 문서 삽입> db.demo358.insertOne({ClientId:101,ClientName:Chris,ClientAge:34}); { acknowledged : true, in
MongoDB에서 배열 값과 다른 필드를 하나로 합치는 방법MongoDB에서 문자열을 이어 붙일 때는 $concat 연산자를 사용하며, 주로 $project 단계와 함께 활용됩니다. 특히 배열에 담긴 여러 값을 하나의 문자열로 만든 뒤, 다른 필드와 결합해야 하는 경우에는 $reduce 연산자를 함께 사용하면 효과적입니다.이 글에서는 실제 예제를 통해 배열의 각 요소를 공백으로 구분된 하나의 문자열로 합치고, 그 결과를 다른 필드와 연결하는 과정을 단계별로 살펴보겠습니다.1. 샘플 컬렉션 생성하기먼저 데모용 컬렉션을 만들고 문서를
MongoDB에서 특정 문서(현재 문서)와 그 바로 앞에 있는 이전 문서를 함께 가져오고 싶다면 sort() 메서드와 limit() 메서드를 조합하면 됩니다. 필요한 문서가 2개뿐이므로 limit(2)를 사용해 결과 개수를 제한합니다.1. 샘플 컬렉션 생성하기먼저 예제로 사용할 컬렉션을 만들고 문서를 삽입하겠습니다.> db.demo360.insertOne({id:101,Name:Chris}); { acknowledged : true, insertedId : ObjectId(5e56a10c54a481fef8ec7a15
MongoDB에서 객체를 키로 사용하여 값 조회하기MongoDB에서 값을 조회하려면 find() 메서드를 사용하고, 중첩된 필드에 접근할 때는 점 표기법(dot notation)을 활용합니다. 이번 글에서는 내장 객체(임베디드 문서) 안의 값을 조회하는 방법을 실제 예제와 함께 단계별로 살펴보겠습니다.1. 샘플 컬렉션 생성먼저 insertOne() 메서드를 사용하여 문서가 포함된 컬렉션을 생성합니다. 각 문서는 details라는 객체 안에 이름(FirstName)과 성(LastName) 정보를 담고 있습니다.> db.demo3
$or 조건으로 MongoDB 쿼리에서 여러 문서 가져오기MongoDB에서는 $or 연산자를 사용하면 지정한 여러 조건 중 하나라도 일치하는 문서를 한 번의 쿼리로 조회할 수 있습니다. 이번 글에서는 실제 예제를 통해 $or 조건으로 여러 문서를 가져오는 방법을 단계별로 알아보겠습니다.1단계: 컬렉션 생성 및 문서 삽입먼저 insertOne() 메서드를 사용해 문서가 포함된 컬렉션을 생성합니다.> db.demo362.insertOne({"ClientName":"John","Clien
MongoDB에서 배열을 내장 문서 배열로 변환하는 방법 배열의 각 요소를 원래 값이 특정 필드에 담긴 내장 문서(embedded document)로 변환하려면 MongoDB의 집계 파이프라인(aggregate)을 활용해야 합니다. 이 글에서는 $addFields와 $map 연산자를 사용하여 ObjectId 배열이나 일반 값 배열을 원하는 문서 구조로 변환하는 과정을 단계별로 살펴봅니다. 1단계: 샘플 컬렉션 생성 먼저 실습에 사용할 문서가 담긴 컬렉션을 생성합니다. db.demo343.insertOne({ ... _id:
MongoDB에서 시작일(startDate)과 종료일(endDate) 사이의 기간이 가장 긴 문서를 조회하려면 애그리게이션 파이프라인의 $addFields, $sort, $limit 연산자를 조합하면 됩니다. 이번 글에서는 실제 예제를 통해 단계별로 그 과정을 자세히 살펴보겠습니다.1단계: 샘플 컬렉션과 문서 생성하기먼저 테스트에 사용할 문서가 포함된 컬렉션을 생성합니다.> db.demo344.insertOne({"startDate":"2020-02-24 10:50:00", "end
MongoDB에서 배열 필드 안에 포함된 하위 문서(subdocument) 중 특정 조건을 만족하는 요소만 추출하고 싶은 경우가 자주 있습니다. 이 글에서는 aggregate 파이프라인의 $match와 $filter 연산자를 활용하여 조건에 맞는 하위 문서만 찾아 반환하는 방법을 예제와 함께 살펴보겠습니다. 1. 샘플 컬렉션 생성하기 먼저 테스트용으로 문서가 포함된 컬렉션을 생성합니다. > db.demo345.insertOne({ ... UserName : Robert, ... UserDetails : [ ...
MongoDB에서 범위 조건으로 내장 문서 배열 쿼리하기내장(embedded) 문서 배열을 특정 범위 조건으로 조회하려면 aggregate() 메서드를 사용하면 됩니다. 이 글에서는 실제 예제를 통해 단계별로 살펴보겠습니다.1. 샘플 컬렉션 생성먼저 문서가 포함된 컬렉션을 생성합니다. 각 문서는 여러 사용자 정보(이름과 점수)를 배열 형태로 가지고 있습니다.> db.demo346.insertOne( ... { ... _id: 101, ... userDetails: [ ... {
MongoDB 내부 배열의 특정 필드 중복 확인하기MongoDB에서 문서 안에 중첩된 내부(inner) 배열의 특정 필드 값이 중복되는지 확인하려면 aggregate() 메서드를 활용하면 됩니다. 이 글에서는 실제 예제를 통해 단계별로 확인 방법을 살펴보겠습니다.1. 예제 컬렉션 생성 및 데이터 삽입먼저 insertOne() 메서드를 사용해 demo347 컬렉션에 문서를 삽입합니다.> db.demo347.insertOne( ... { ... details: { ... details1: [
MongoDB에서 문서 내부의 객체나 특정 필드를 삭제하려면 $unset 연산자를 사용하면 됩니다. 이 글에서는 실제 예제를 통해 $unset의 사용 방법을 단계별로 살펴보겠습니다.1. 샘플 컬렉션 생성 및 데이터 삽입먼저 insertOne() 메서드를 사용해 demo348 컬렉션에 두 개의 문서를 삽입합니다.> db.demo348.insertOne( ... { ... details: { ... studentDetails: ... { ... StudentName
MongoDB의 findOneAndUpdate() 메서드는 조건에 일치하는 문서 중 단 하나의 문서만 업데이트할 때 사용합니다. 컬렉션 내에 동일한 조건을 만족하는 문서가 여러 개 있더라도, 이 메서드는 가장 먼저 발견된 문서 한 건에만 업데이트를 적용합니다.실제 예제를 통해 findOneAndUpdate()의 동작 방식을 살펴보겠습니다.1. 컬렉션 생성 및 문서 삽입먼저 insertOne() 메서드를 사용해 demo349 컬렉션을 생성하고 문서들을 삽입합니다.db.demo349.insertOne({Name:Chris,Marks:5
MongoDB에서 배열 안의 객체, 그 안에 또 다른 배열이 중첩된 구조처럼 깊이 중첩된(deeply nested) 객체를 조회하려면 점(.) 표기법(dot notation)을 사용해야 합니다. 이 글에서는 실제 예제를 통해 중첩된 문서를 삽입하고, 점 표기법으로 원하는 데이터를 정확히 조회하는 방법을 단계별로 살펴보겠습니다. 1. 샘플 컬렉션 생성하기 먼저 중첩된 구조를 가진 문서들을 담은 컬렉션을 생성합니다. 아래 예제에서는 demo350이라는 컬렉션에 고객 정보가 여러 겹으로 중첩된 문서 두 개를 삽입합니다. > db
MongoDB에서 범위 조건으로 배열 요소 조회하기MongoDB 문서 내 배열 필드에서 특정 조건(예: 가격이 600 초과, 900 미만)을 만족하는 요소만 골라내려면 aggregate() 파이프라인과 $match, $addFields, $filter 연산자를 함께 사용하면 됩니다. 아래 예제를 통해 전체 과정을 단계별로 살펴보겠습니다.1단계: 컬렉션 생성 및 문서 삽입먼저 데모용 컬렉션을 만들고 상품 정보가 담긴 문서 두 개를 삽입합니다. 각 문서에는 상품 상세 정보(ProductDetails)가 배열 형태로 저장되어 있습니다.&
MongoDB에서 문서의 특정 필드만 선택적으로 업데이트하려면 update() 메서드를 사용합니다. 이때 새로운 값을 지정하는 역할은 $set 연산자가 담당하며, $set을 사용하면 지정한 필드만 수정되고 나머지 데이터는 그대로 유지됩니다.1. 샘플 컬렉션 생성하기먼저 실습에 사용할 컬렉션을 만들고 문서를 삽입해 보겠습니다.> db.demo352.insertOne({Name:Chris}); { acknowledged : true, insertedId : ObjectId(5e55510af8647eb59e5620ba) } >
MongoDB 배열 내부의 문서 개수 세기배열 필드 내부에 포함된 문서(요소)의 개수를 확인하려면 aggregate() 메서드와 함께 $project, $isArray, $size 연산자를 활용하면 됩니다.먼저 예제로 사용할 컬렉션을 생성하고 문서를 삽입해 보겠습니다.> db.demo332.insertOne({details:[{Name:Chris,Age:21}]}); { acknowledged : true, insertedId : ObjectId(5e521f16f8647eb59e56208e) } > db.d
MongoDB aggregate()로 조건에 맞는 키를 목록에 추가하기MongoDB에서 특정 조건과 일치하는 요소만 추출해 새로운 목록(배열)로 추가하려면 aggregate() 메서드와 함께 $addFields, $filter 연산자를 활용하면 됩니다.먼저 예제에 사용할 컬렉션을 생성하고 문서를 삽입해 보겠습니다.> db.demo334.insertOne({... Name: Chris,... Age: 21,... details: [{... Subject: MySQL,... Sco