MongoDB에서 특정 문서 제거하기MongoDB에서 특정 문서를 삭제하려면 remove() 메서드를 사용하면 됩니다. 이 메서드에 조건을 전달하면 해당 조건과 일치하는 문서만 컬렉션에서 제거됩니다.먼저 예제로 사용할 문서들이 포함된 컬렉션을 생성해 보겠습니다.> db.demo56.insertOne({Name:Chris}); { acknowledged : true, insertedId : ObjectId(5e272e0bcfb11e5c34d89917) } > db.demo56.insertOne({Name:Davi
MongoDB에서 대량의 데이터를 대상으로 복잡한 검색 쿼리를 빠르게 실행하려면 인덱스(index) 생성이 필수적입니다. 특히 문자열 필드에서 키워드 기반 검색을 수행할 때는 텍스트(text) 인덱스를 활용하면 전체 컬렉션을 스캔하지 않고도 효율적인 검색이 가능합니다.이 글에서는 실제 예제를 통해 컬렉션을 만들고, 텍스트 인덱스를 생성한 뒤, $text 연산자로 검색을 수행하는 과정을 단계별로 살펴보겠습니다.1단계: 샘플 데이터가 담긴 컬렉션 생성먼저 insertOne() 메서드를 사용해 문서(document)를 포함하는 컬렉션을
MongoDB에서 여러 문서 중 특정 조건에 일치하는 하나의 문서 내 단일 필드만 업데이트해야 하는 경우가 자주 있습니다. 예를 들어, 투표(Vote) 정보를 담은 문서에서 특정 투표자의 TotalVote 값만 증가시키고 싶다면 어떻게 해야 할까요? 이 글에서는 $inc 연산자와 점 표기법(Dot Notation)을 활용해 이를 해결하는 방법을 단계별로 살펴보겠습니다.1. 샘플 컬렉션 생성하기먼저 투표 데이터를 포함한 문서로 컬렉션을 생성합니다. insertOne() 메서드를 사용하여 두 개의 문서를 삽입해 보겠습니다.> db
MongoDB에서 쿼리 결과의 개수를 제한하려면 limit() 메서드를 사용합니다. 이 메서드는 find() 쿼리가 반환할 문서(document)의 최대 개수를 지정할 수 있어, 대량의 데이터 중 필요한 만큼만 효율적으로 가져올 때 유용합니다.1. 컬렉션 생성 및 문서 삽입먼저 insertOne() 메서드를 사용해 컬렉션을 생성하고 문서를 삽입해 보겠습니다.> db.demo58.insertOne({Name:David}); { acknowledged : true, insertedId : ObjectId(5e285f8f
MongoDB 문서를 안전하게 업데이트하는 방법MongoDB에서 특정 필드의 값만 수정하고 싶을 때는 update() 메서드와 함께 $set 연산자를 사용하면 됩니다. 이 방법을 사용하면 기존 문서 전체가 덮어써지지 않고, 지정한 필드만 변경됩니다.실제 예제를 통해 확인해 보겠습니다. 먼저 컬렉션을 생성하고 문서를 삽입합니다.> db.demo401.insertOne( ... { ... _id : 1001, ... Name : Chris, ... SubjectName : MongoDB, ..
MongoDB에서 범위 조건으로 문서 조회하기MongoDB에서는 $gt(초과)와 $lt(미만) 같은 비교 연산자를 함께 사용하면 하나의 쿼리로 여러 조건을 설정할 수 있습니다. 이를 활용하면 특정 범위에 속하는 값만 손쉽게 조회할 수 있습니다.먼저 예제에 사용할 컬렉션을 만들고 문서를 삽입해 보겠습니다.> db.demo59.insertOne({Values:50}); { acknowledged : true, insertedId : ObjectId(5e286286cfb11e5c34d89923) } > db.demo
MongoDB에서 특정 조건에 맞는 문서만 선택적으로 수정하려면 update() 메서드를 사용하면 됩니다. 이 글에서는 실제 예제를 통해 조건부 업데이트를 수행하는 과정을 단계별로 살펴보겠습니다.1단계: 샘플 컬렉션 생성먼저 insertOne() 메서드를 사용하여 문서가 포함된 컬렉션을 생성합니다.> db.demo402.insertOne({id:101,Name:Chris}); { acknowledged : true, insertedId : ObjectId(5e61214efac4d418a0178585) } >
MongoDB에서 특정 기간 사이의 날짜 데이터를 조회하려면 $gt(보다 큼) 연산자와 $lt(보다 작음) 연산자를 함께 사용하면 됩니다. 이 글에서는 실제 예제를 통해 날짜 범위 조건으로 문서를 검색하는 방법을 단계별로 살펴보겠습니다.1. 샘플 컬렉션 생성먼저 날짜 필드를 포함한 문서들을 담은 컬렉션을 생성합니다. ISODate() 함수를 사용해 날짜 값을 저장합니다.> db.demo60.insertOne({ArrivalDate:new ISODate(2019-01-11 12:30:10)}); { acknowledged
MongoDB에서 대용량 텍스트 필드의 검색 성능을 개선하려면 ensureIndex() 메서드로 인덱스를 생성하고, 텍스트 검색 시 $regex 연산자를 함께 활용하는 것이 효과적입니다. 특히 정규식 패턴이 문서 시작 부분(^)을 기준으로 작성되면 MongoDB가 기존 인덱스를 그대로 활용할 수 있어 쿼리 속도가 크게 향상됩니다.1. 컬렉션 생성 및 인덱스 설정먼저 demo46 컬렉션을 자동으로 생성하면서 Name 필드에 오름차순 인덱스를 만들어 보겠습니다.> db.demo46.ensureIndex({Name:1}); {
MongoDB에서 문서의 위치 확인하기MongoDB에서 특정 문서가 컬렉션 안에서 몇 번째에 위치하는지 확인하려면 sort() 메서드와 count() 메서드를 함께 사용하면 됩니다. 기본 원리는 간단합니다. 해당 문서보다 정렬 순서상 앞선 문서의 개수를 세면 그것이 곧 문서의 위치가 되기 때문입니다.먼저 예제로 사용할 컬렉션을 만들어 보겠습니다.1단계: 컬렉션 생성 및 문서 삽입> db.demo47.insertOne({ClientName:Adam});{ acknowledged : true, &n
MongoDB에서 배열 필드의 특정 개수 항목만 가져오고 싶다면 $slice 연산자를 사용하면 됩니다. 이 연산자는 전체 배열이 아닌 원하는 개수의 요소만 반환해 주기 때문에, 대용량 배열 데이터를 다룰 때 특히 유용합니다.1. 샘플 컬렉션 생성하기먼저 문서가 포함된 컬렉션을 생성하겠습니다.> db.demo48.insertOne({Name:[David,Chris,Sam,Mike,Carol]}); { acknowledged : true, insertedId : ObjectId(5e270491cfb11e5c34d8990
MongoDB에서 배열 내부의 특정 요소를 찾아 수정해야 하는 경우가 자주 발생합니다. 이럴 때 위치(Positional) $ 연산자를 사용하면 조건에 일치하는 배열 요소만 정확하게 업데이트할 수 있습니다. 이 글에서는 배열 요소를 ID로 검색하고 업데이트하는 전 과정을 실제 예제와 함께 단계별로 살펴보겠습니다.1. 샘플 컬렉션 생성먼저 insertOne() 메서드를 사용하여 배열 필드를 포함한 문서를 저장할 컬렉션을 생성합니다. 아래 예제에서는 여러 과목 정보를 담은 Details 배열을 포함하는 문서를 만듭니다.> db.d
JSON 형태의 배열 대신 순수한 값 배열을 얻고 싶다면 $in 연산자를 사용하면 됩니다. 또한 보다 큰(greater than) 조건을 처리할 때는 MongoDB의 $gt 연산자를 함께 활용합니다.이번 글에서는 실제 예제를 통해 50보다 큰 값을 가진 문서들을 값 배열 형태로 추출하는 방법을 단계별로 살펴보겠습니다.1. 샘플 컬렉션 생성하기먼저 테스트용 컬렉션에 여러 개의 문서를 저장합니다.> db.demo50.save({Value:40});WriteResult({ nInserted : 1 })> db.demo50.sa
MongoDB에서 한 컬렉션 내의 다른 필드(열) 값을 가져와 특정 필드에 동일한 값을 설정하고 싶다면, forEach() 메서드로 문서를 순회하면서 값을 복사하면 됩니다. 이 글에서는 실제 예제를 통해 그 과정을 단계별로 살펴보겠습니다.1. 샘플 컬렉션 생성먼저 문서가 포함된 컬렉션을 생성합니다.> db.demo51.insert({Name1:Chris,Name:David,Age:24}); WriteResult({ nInserted : 1 }) > db.demo51.insert({Name1:Carol,Name:Mike,A
MongoDB에서 ObjectId를 문자열(String)로 변환하기MongoDB에서 ObjectId를 문자열(String)로 변환하려면 toString() 메서드를 사용하면 됩니다. 먼저 문서가 포함된 컬렉션을 생성해 보겠습니다.> db.demo52.insertOne({"StudentName":"Chris"});{ "acknowledged" : true, "insertedId" : ObjectId
MongoDB에서 여러 필드의 OR 조건을 위한 인덱스 생성 방법여러 필드를 대상으로 하는 쿼리를 효율적으로 처리하려면 복합 인덱스(compound index)를 활용해야 합니다. MongoDB에서는 ensureIndex() 메서드를 사용해 인덱스를 생성할 수 있으며, 이 메서드에 여러 개의 필드를 함께 전달하면 하나의 인덱스가 여러 필드를 커버하도록 만들 수 있습니다.참고로 ensureIndex()는 최신 버전의 MongoDB에서 더 이상 사용되지 않으므로(deprecated), 실제 운영 환경에서는 동일한 기능을 수행하는 cre
MongoDB에서 배열 형태로 저장된 데이터를 객체(맵) 형태로 변환해야 하는 경우가 있습니다. 이럴 때 집계 파이프라인의 $map과 $arrayToObject 연산자를 함께 사용하면 손쉽게 처리할 수 있습니다.테스트용 컬렉션 생성하기먼저 예제로 사용할 문서가 포함된 컬렉션을 생성하겠습니다.> db.demo398.insertOne({ ... details:[ ... { ... Name:Chris, ... Age:22 ... } ... ] ... } ... ); {
MongoDB에서 배열 요소를 특정 범위만큼 잘라서 가져오고 싶다면 $slice 연산자에 매개변수를 활용하면 됩니다. $slice는 두 개의 매개변수를 받을 수 있는데, 첫 번째 매개변수는 가져올 요소의 시작 위치(오프셋)를 지정하고, 두 번째 매개변수는 가져올 개수, 즉 범위를 지정합니다.컬렉션 생성하기먼저 데모용 컬렉션을 만들고 문서를 삽입해 보겠습니다.> db.demo54.insertOne({ListOfValues:[100,2030,5353,7364,635,535,524,423,2434,1323,799874,90]});
MongoDB에서 결과 목록 중 특정 인덱스에 해당하는 요소 하나만 가져오려면 집계 파이프라인(aggregation)과 $limit을 사용하면 됩니다. 여기에 $skip을 함께 활용하면 지정한 개수만큼 문서를 건너뛴 뒤 원하는 위치의 문서 한 개만 정확하게 조회할 수 있습니다. 1. 샘플 컬렉션 생성하기 먼저 insertOne() 메서드를 이용해 문서 3개를 포함하는 컬렉션을 만들어 보겠습니다. > db.demo391.insertOne( ... { "_id" : 101, "Name"
개요MongoDB에서 배열 필드에 포함된 특정 값을 제거하려면 $pull 연산자를 사용합니다. 여러 문서에 동시에 적용하려면 multi: true 옵션을 함께 설정해야 합니다. 이 글에서는 실제 예제를 통해 두 문서의 배열에서 동일한 값을 한 번에 제거하는 과정을 단계별로 살펴보겠습니다.1단계: 컬렉션 생성 및 문서 삽입먼저 insertOne() 메서드를 사용하여 demo392라는 컬렉션을 생성하고 문서 두 개를 삽입합니다. 각 문서는 Name 필드와 details 배열을 가지고 있으며, details 배열 안에는 _id가 101인