MongoDB에서 배열 안에 포함된 특정 태그 레코드를 수정하려면 위치 연산자($)와 함께 update 명령을 사용하면 됩니다. 위치 연산자는 쿼리 조건과 일치하는 첫 번째 배열 요소를 자동으로 찾아 해당 요소만 업데이트해 주기 때문에, 배열 전체를 다시 쓰지 않고도 효율적으로 데이터를 변경할 수 있습니다.1. 테스트용 컬렉션 생성먼저 태그 배열을 포함한 문서를 담은 컬렉션을 생성합니다. insertOne() 메서드를 사용하면 됩니다.> db.demo713.insertOne( ... { ... tags: ...
MongoDB에서 여러 조건을 동시에 만족하는 문서를 조회하려면 $in 연산자를 활용할 수 있습니다. $in 연산자는 특정 필드의 값이 지정한 배열 내 값들 중 하나와 일치하는 문서만 반환합니다.1. 컬렉션 생성 및 문서 삽입먼저 데모용 컬렉션을 만들고 문서를 삽입해 보겠습니다.> db.demo714.insertOne({FirstName:Chris,LastName:Brown}); { acknowledged : true, insertedId : ObjectId(5ea9a2da85324c2c98cc4c2b) } &g
MongoDB에서 배열(하위 컬렉션)에 포함된 특정 객체를 제거하려면 $pull 연산자를 사용해야 합니다. $pull은 지정한 조건과 일치하는 요소를 배열에서 자동으로 삭제해 주는 강력한 업데이트 연산자입니다.1. 테스트 컬렉션 생성 및 문서 삽입먼저 예제에 사용할 컬렉션을 만들고 문서를 삽입해 보겠습니다. insertOne() 메서드를 사용합니다.> db.demo715.insertOne({... _id: 1,... details : [... { id : 101,... Informat
MongoDB는 스키마가 유연한 NoSQL 데이터베이스로, 중첩된(nested) 구조를 가진 계층형 JSON 문서를 자연스럽게 저장할 수 있습니다. 이 글에서는 insertOne() 메서드를 활용하여 여러 단계로 중첩된 계층형 JSON 문서를 생성하고 조회하는 방법을 예제와 함께 살펴봅니다.계층형 JSON 생성 기본 문법MongoDB에서 계층형 JSON을 만들려면 다음과 같은 문법을 사용합니다. 필드 안에 또 다른 객체(내장 문서)를 넣고, 그 안에 배열까지 중첩시킬 수 있습니다.db.demo716.insertOne( {
MongoDB에서 집계(aggregation)를 수행하려면 aggregate() 메서드를 사용합니다. 배열로 저장된 중첩 문서의 날짜를 그룹화하려면 먼저 $unwind로 배열을 분해한 후, $group 연산자로 날짜별 개수를 집계할 수 있습니다.샘플 컬렉션 생성하기먼저 배송 정보(shippingdetails) 배열을 포함하는 문서로 컬렉션을 생성해 보겠습니다.> db.demo717.insertOne( ... { ... shippingdetails: ... [ ... { ...
모든 문서에 걸쳐 고유한 값의 개수를 계산하려면 MongoDB의 aggregate() 메서드를 사용해야 합니다. 집계 파이프라인에서 $unwind로 배열을 펼치고, $match로 조건에 맞는 문서를 필터링한 뒤, $addToSet으로 중복 없는 값만 수집하고 마지막에 $size로 개수를 구하면 됩니다.1. 컬렉션 생성 및 문서 삽입먼저 데모용 컬렉션을 생성하고 문서를 삽입해 보겠습니다.> db.demo718.insertOne( ... { ... id:101, ... details: ...
MongoDB에서 특정 값 이상의 문서 찾기MongoDB에서 특정 값보다 크거나 같은 값을 가진 문서를 조회하려면 $gte(greater than or equal) 비교 연산자를 사용합니다. 이 연산자는 지정한 필드의 값이 주어진 값 이상인 문서만 반환합니다.기본 문법db.yourCollectionName.find({yourFieldName:{$gte:yourValue}});예제 컬렉션 생성하기먼저 실습에 사용할 컬렉션을 만들고 문서를 삽입해 보겠습니다.> db.demo571.insertOne({Price:140});{
MongoDB에서 대소문자를 구분하지 않고(case-insensitive) 문자열을 검색하려면 find() 메서드와 함께 정규식(regex)을 활용하면 됩니다. 이 글에서는 실제 예제를 통해 대소문자 무시 검색 쿼리를 작성하는 방법을 단계별로 살펴보겠습니다.대소문자를 구분하지 않는 검색의 기본 문법정규식 옵션 중 하나인 i(ignore case) 플래그를 사용하면 대소문자를 구분하지 않는 검색이 가능합니다. 기본 문법은 다음과 같습니다.db.demo572.find({yourFieldName : { $regex:/^yourValue$
MongoDB에서 배열 필드 내 요소 중 하나라도 특정 값보다 큰 경우 해당 문서를 조회하려면 $elemMatch 연산자를 사용하면 됩니다.$elemMatch란?$elemMatch 연산자는 배열 필드에 지정된 모든 쿼리 조건을 만족하는 요소가 최소 하나 이상 포함되어 있는 문서를 매칭합니다. 단순 비교 연산자만 사용하는 것과 달리, 배열의 각 요소에 대해 여러 조건을 동시에 적용할 수 있어 더욱 정교한 검색이 가능합니다.예제용 컬렉션 생성먼저 실습에 사용할 컬렉션과 문서를 생성해 보겠습니다.> db.demo701.insertO
MongoDB 인덱스 생성이란?MongoDB에서 인덱스를 생성하려면 createIndex() 메서드를 사용합니다. 인덱스는 특정 필드 값을 기준으로 데이터를 빠르게 검색할 수 있도록 해주는 핵심 기능으로, 대용량 컬렉션에서 쿼리 성능을 크게 향상시킵니다.이번 글에서는 문서가 포함된 컬렉션에 인덱스를 생성하고, 데이터를 삽입한 뒤 조회까지 확인하는 전체 과정을 예제와 함께 살펴보겠습니다.1단계: createIndex()로 인덱스 생성하기먼저 details.id 필드에 오름차순(1) 인덱스를 생성합니다. 이때 컬렉션이 아직 존재하지 않
MongoDB에서 문서 내 배열의 항목 개수를 세고 그 결과를 새로운 필드로 표시하려면 $size 연산자를 사용하면 됩니다. $size는 집계(aggregation) 파이프라인의 $project 단계와 함께 활용되며, 각 문서의 배열 길이를 손쉽게 계산할 수 있게 해줍니다.먼저 예제 컬렉션을 생성하고 문서를 삽입해 보겠습니다.> db.demo703.insertOne({ListOfSubject:[MySQL,MongoDB]}); { acknowledged : true, insertedId : ObjectId(5ea6eb
MongoDB에서 특정 필드의 고유한 값(unique values)만 추출하고 중복된 데이터는 제외하고 싶을 때가 있습니다. 이럴 때 사용하는 것이 바로 distinct() 메서드입니다. distinct()는 단일 컬렉션 내에서 지정된 필드의 중복되지 않은 값을 모두 찾아 배열(array) 형태로 반환해 줍니다.1. 예제용 컬렉션 생성먼저 실습을 위해 문서(document) 여러 개를 포함하는 컬렉션을 만들어 보겠습니다. 의도적으로 중복된 값(hi, fo)도 함께 삽입했습니다.> db.demo704.insertOne({Lang
MongoDB에서 배열 형태로 저장된 내장 문서(Embedded Document)를 조건에 맞게 조회하려면 aggregate() 메서드를 사용하는 것이 효과적입니다. 이 글에서는 예제 컬렉션을 만들고, $unwind와 $match 파이프라인 단계를 활용해 내장 문서를 필터링하는 과정을 단계별로 살펴보겠습니다.1. 샘플 컬렉션 생성하기먼저 insertOne() 메서드를 사용하여 내장 문서 배열을 포함한 도큐먼트를 컬렉션에 삽입합니다.> db.demo705.insertOne( ... { ... _id:101,
MongoDB 문서와 하위 문서란?MongoDB는 NoSQL 데이터베이스로, 하나의 문서(Document) 안에 또 다른 문서를 중첩하여 저장할 수 있습니다. 이렇게 문서 내부에 포함된 문서를 하위 문서(Subdocument)라고 부르며, 배열 형태로 여러 개를 담을 수도 있습니다. 이 글에서는 하위 문서가 포함된 컬렉션을 생성하고, 데이터를 삽입·조회·업데이트하는 전체 과정을 예제와 함께 살펴보겠습니다.문서 및 하위 문서 삽입 기본 문법하위 문서를 포함한 문서를 삽입할 때의 기본 문법은 다음과 같습니다.db.yourCollecti
MongoDB에서 서버 정보가 배열 형태로 저장된 컬렉션이 있을 때, 특정 서버의 상태(Status)를 Active(활성)에서 Inactive(비활성)로 변경해야 하는 경우가 자주 발생합니다. 이 글에서는 배열 안의 원하는 IP에 해당하는 서버 상태만 정확히 업데이트하는 방법을 단계별로 살펴보겠습니다.1. 샘플 컬렉션 생성먼저 서버 정보를 담은 문서를 포함하는 컬렉션을 생성합니다.> db.demo707.insertOne( ... { ... id:101, ... serverInformation: ...
MongoDB에서 특정 조건에 맞는 레코드를 조회하려면 find() 메서드에 조건을 지정하면 됩니다. 이번 글에서는 실제 예제를 통해 조건 기반 검색 방법을 단계별로 살펴보겠습니다.1. 컬렉션 생성 및 문서 삽입먼저 insertOne() 메서드를 사용해 컬렉션에 문서를 생성합니다.> db.demo708.insertOne({Name:John,Marks:54}); { acknowledged : true, insertedId : ObjectId(5ea702e4d346dcb074dc6f33) } > db.demo708
MongoDB에서 점수(Marks)가 가장 낮은 두 개의 문서를 조회하려면 집계 파이프라인의 여러 단계를 조합하면 됩니다. 먼저 $group으로 점수별로 데이터를 묶고, $sort로 오름차순 정렬한 뒤, $limit: 2를 사용해 최솟값을 가진 두 개의 문서만 출력할 수 있습니다.1. 샘플 컬렉션 생성예제 실습을 위해 다음과 같이 문서를 포함한 컬렉션을 생성합니다.> db.demo709.insertOne({Name:John,Marks:75}); { acknowledged : true, insertedId : Ob
MongoDB의 $natural 연산자는 컬렉션에 저장된 문서들을 자연스러운 순서(natural order), 즉 디스크에 기록된 순서대로 반환합니다. 만약 이 순서를 반대로 뒤집고 싶다면 $natural: -1 옵션을 사용하면 됩니다.테스트용 컬렉션 생성하기먼저 예제로 사용할 컬렉션을 만들고 문서를 삽입해 보겠습니다.> db.demo710.insertOne({id:101,Name:Robert}); { acknowledged : true, insertedId : ObjectId(5ea83a855d33e20ed10
MongoDB에서 $and와 $in 연산자로 조건 검색하기MongoDB에서 특정 FirstName과 LastName을 가진 문서를 찾으려면 find() 메서드 안에서 $and 연산자와 $in 연산자를 함께 사용하면 됩니다. $and는 여러 조건이 모두 참일 때만 문서를 반환하고, $in은 지정한 값 목록 중 하나라도 일치하면 통과시켜 주기 때문에 두 연산자를 조합하면 유연한 복합 조건 검색이 가능합니다.먼저 예제로 사용할 컬렉션을 생성하고 문서를 삽입해 보겠습니다.1. 컬렉션 생성 및 문서 삽입> db.demo692.inser
MongoDB에서 배열의 처음 4개 값 건너뛰고 다음 3개만 표시하기MongoDB에서 배열 필드의 특정 구간에 있는 요소만 조회하고 싶다면 $slice 연산자를 활용하면 됩니다. $slice는 [건너뛸 개수, 표시할 개수] 형태로 인자를 받아, 배열의 앞부분을 무시한 뒤 원하는 만큼의 값만 반환합니다.이번 글에서는 배열의 처음 4개 값을 건너뛰고 다음 3개 값만 표시하는 방법을 예제와 함께 살펴보겠습니다.1. 컬렉션 생성 및 문서 삽입먼저 demo693이라는 컬렉션을 생성하고 Values라는 배열 필드를 가진 문서들을 삽입합니다.&