MongoDB 정확한 일치(Exact Match) 쿼리 개요MongoDB에서 특정 필드의 값이 배열이 아닌 단일 값으로 정확히 일치하는 문서만 조회하고 싶을 때가 있습니다. 이럴 때는 $exists 연산자를 활용하면 됩니다. $exists는 해당 필드(또는 배열 인덱스)의 존재 여부를 확인하는 연산자입니다.예제를 위해 먼저 문서가 포함된 컬렉션을 생성해 보겠습니다.> db.demo290.insertOne({ListOfName:Chris}); { acknowledged : true, insertedId : Object
MongoDB에서 두 필드의 합계를 다른 필드에 저장하기MongoDB는 문서(document) 기반 데이터베이스이므로 관계형 데이터베이스의 열(column) 개념은 필드(field)에 해당합니다. 두 필드의 값을 더한 결과를 새로운 필드에 저장하려면 집계 파이프라인(aggregate)에서 $add 연산자를 사용하면 됩니다.아래 예제를 통해 단계별로 살펴보겠습니다.1단계: 컬렉션 생성 및 문서 삽입먼저 insertOne() 메서드를 사용해 예제용 컬렉션에 문서를 하나 삽입합니다.> db.demo291.insertOne({Valu
MongoDB에서 최상위 컬렉션의 필드 값과 내장(embedded) 문서 내부의 필드 값을 비교하여 동등성을 확인해야 하는 경우가 있습니다. 이럴 때 $where 연산자를 사용하면 JavaScript 표현식을 통해 두 필드를 직접 비교할 수 있습니다.테스트용 컬렉션 생성하기먼저 문서가 포함된 컬렉션을 생성하겠습니다. insertOne() 메서드를 사용하여 두 개의 문서를 삽입합니다.> db.demo292.insertOne({FirstName:Chris,LastName:Brown, ... Friend:{FirstName:Da
MongoDB에서는 $and 연산자와 $or 연산자를 함께 사용하여 복잡한 조건의 쿼리를 작성할 수 있습니다. 이 글에서는 실제 예제를 통해 두 연산자를 결합해 문서를 조회하는 방법을 단계별로 살펴보겠습니다.1. 샘플 컬렉션 생성하기먼저 insertOne() 메서드를 사용하여 문서가 담긴 컬렉션을 생성합니다.> db.demo293.insertOne({FirstName:Chris,LastName:Brown,Age:24}); { acknowledged : true, insertedId : ObjectId(5e4d4507
MongoDB에서 컬렉션(collection)을 쿼리하거나 반환하려면 getCollection() 메서드를 사용하면 됩니다. 이 글에서는 실제 예제를 통해 컬렉션 생성부터 조건 기반 조회까지 단계별로 살펴보겠습니다.1. 컬렉션 생성 및 문서 삽입먼저 insertOne() 메서드를 사용해 demo294 컬렉션에 직원 정보 문서 세 개를 삽입해 보겠습니다.> db.demo294.insertOne({EmployeeId:101,EmployeeName:Chris});{ acknowledged :
MongoDB에서는 배열 형태로 저장된 필드의 값을 간단하게 조회할 수 있습니다. 배열 필드 이름(arrayFieldName)과 찾고자 하는 값을 함께 지정하면, MongoDB가 자동으로 배열 내부의 요소를 검색하여 일치하는 문서를 반환합니다.샘플 컬렉션 생성하기먼저 문서를 포함하는 컬렉션을 생성해 보겠습니다.> db.demo295.insertOne({status:[Active,Inactive]}); { acknowledged : true, insertedId : ObjectId(5e4d4ea65d93261e4bc9
MongoDB에서 배열 내부 쿼리로 카운트 구하는 방법MongoDB에서 배열 안에 포함된 필드를 대상으로 쿼리를 실행하고, 해당 필드의 존재 여부를 확인한 뒤 일치하는 문서의 개수(카운트)를 구하려면 $exists 연산자를 활용하면 됩니다. 이 글에서는 실제 예제를 통해 그 과정을 단계별로 살펴보겠습니다.1. 샘플 컬렉션 생성하기먼저 demo296이라는 컬렉션을 만들고 문서들을 삽입합니다. 각 문서는 details라는 배열 필드를 가지며, 배열 요소마다 서로 다른 하위 필드가 존재한다는 점이 핵심입니다.> db.demo296.
MongoDB에서 데이터를 삽입하면서 동시에 저장되는 총 레코드 수를 제한하고 싶다면 캡드 컬렉션(Capped Collection)을 활용하는 것이 가장 효과적입니다. 컬렉션을 생성할 때 capped: true 옵션을 지정하고, size(컬렉션의 최대 크기)와 max(저장 가능한 최대 문서 수) 값을 함께 설정하면 됩니다. 캡드 컬렉션이란? 캡드 컬렉션은 고정된 크기를 가진 특수한 컬렉션으로, 용량이나 문서 수 한도에 도달하면 가장 오래된 문서부터 자동으로 삭제되며 새로운 문서가 그 자리를 대체합니다. 로그 데이터나 최근 기록만 유
MongoDB에서 대규모 동적 데이터셋의 태그를 효율적으로 처리하려면 인덱스 생성과 explain() 분석이 핵심입니다. 배열 필드에 인덱스를 만들면 멀티키(multikey) 인덱스로 동작하여 $in 연산자 기반의 태그 검색 성능을 크게 향상시킬 수 있습니다.1단계: 인덱스 생성 및 샘플 데이터 준비먼저 컬렉션에 인덱스를 생성한 뒤, 태그 역할을 할 배열 필드가 포함된 문서들을 삽입합니다.> db.demo278.ensureIndex({Subjects:1}); { createdCollectionAutomatically :
MongoDB에서 배열에 포함된 특정 요소를 삭제하려면 $pull 연산자를 사용하면 됩니다. $pull은 지정한 조건과 일치하는 값을 배열에서 제거해 주는 업데이트 연산자로, 조건에 맞는 모든 항목을 한 번에 처리할 수 있습니다. 이번 글에서는 실제 예제를 통해 배열에서 요소를 삭제하는 과정을 단계별로 살펴보겠습니다.1. 샘플 컬렉션 생성하기먼저 데모용 컬렉션을 만들고 문서를 삽입합니다. insertOne() 메서드를 사용하면 문서를 손쉽게 추가할 수 있습니다.> db.demo279.insertOne({id:[101,103,1
맵리듀스(Map-Reduce)란 무엇인가?맵리듀스(Map-Reduce)는 대량의 데이터를 처리하여 유용한 집계 결과로 압축·정제하기 위한 데이터 처리 패러다임입니다. MongoDB에서는 mapReduce() 메서드를 사용해 컬렉션에 저장된 문서들을 그룹화하고, 통계 계산이나 집합 연산 등 다양한 집계 작업을 수행할 수 있습니다.맵리듀스는 크게 두 단계로 동작합니다.Map(맵) 단계: 각 문서를 순회하며 emit() 함수를 통해 키-값 쌍을 생성합니다.Reduce(리듀스) 단계: 동일한 키를 가진 값들을 모아 하나의 요약된 결과로 병
MongoDB에서 _id 값을 기준으로 컬렉션에서 특정 문서를 조회하려면 find() 메서드와 함께 $in 연산자를 사용하면 됩니다. 이 글에서는 실제 예제를 통해 그 방법을 단계별로 살펴보겠습니다.1. 샘플 컬렉션 생성먼저 insertOne() 메서드를 사용해 문서가 담긴 컬렉션을 생성합니다.> db.demo281.insertOne({Name:Chris,Age:21}); { acknowledged : true, insertedId : ObjectId(5e4aac28dd099650a5401a66) } > db.
MongoDB에서 다른 필드의 값을 활용해 배열을 업데이트하려면 $push 연산자를 사용합니다. 특히 $each와 함께 사용하면 여러 값을 한 번에 추가할 수 있고, $slice를 조합하면 배열의 크기까지 제어할 수 있습니다. 이 글에서는 실제 예제를 통해 단계별로 살펴보겠습니다. 1. 샘플 컬렉션 생성 먼저 문서가 포함된 컬렉션을 생성합니다. > db.demo283.insertOne({"Name":"Chris","Status":["Active","
MongoDB에서 데이터를 외부 파일로 내보낼 때는 mongoexport 명령어를 사용하면 됩니다. mongodump가 전체 데이터베이스 백업에 적합하다면, mongoexport는 원하는 필드만 골라서 CSV나 JSON 형식으로 추출할 수 있어 훨씬 유연합니다.mongoexport 기본 문법기본적인 사용 형식은 다음과 같습니다.mongoexport -d 데이터베이스이름 -c 컬렉션이름 -f 필드이름 --type=csv -o 저장경로/파일이름;각 옵션의 의미는 다음과 같습니다.-d : 대상 데이터베이스 이름-c : 내보낼 컬렉션 이름
배열 안의 하위 문서(subdocument) 중에서 특정 필드만 가진 항목만 골라내고 싶은 경우가 종종 있습니다. 이럴 때는 MongoDB의 aggregate() 메서드를 활용하면 됩니다. 이 글에서는 $match, $unwind, $project 파이프라인 단계를 조합하여 원하는 결과를 얻는 과정을 단계별로 살펴보겠습니다. 1. 샘플 컬렉션 생성하기 먼저 실습용 컬렉션을 만들어 보겠습니다. 아래 예제에서는 demo285라는 컬렉션에 details 배열 필드를 가진 문서 하나를 삽입합니다. 배열에는 Name 필드를 가진 요소와 N
MongoDB 셸에서 show dbs 명령은 데이터베이스 목록을 간편하게 확인할 수 있는 헬퍼(helper) 명령입니다. 하지만 내부적으로 이 명령은 BSON 형식의 listDatabases 커맨드로 변환되어 서버에 전달됩니다. 드라이버나 스크립트 환경에서 직접 데이터베이스 목록을 조회해야 한다면 db.runCommand() 메서드를 사용하면 됩니다.1단계: admin 데이터베이스로 전환listDatabases 커맨드는 admin 데이터베이스에서 실행하는 것이 일반적입니다. 먼저 아래와 같이 admin 데이터베이스로 전환합니다.&g
MongoDB에서 배열에 포함된 값들 중 최소값과 최대값을 구하려면 집계 파이프라인에서 $min과 $max 연산자를 사용하면 됩니다. 이 글에서는 실제 예제를 통해 배열 내 필드의 최소값과 최대값을 조회하는 방법을 단계별로 살펴보겠습니다.1. 샘플 컬렉션 생성하기먼저 문서를 담고 있는 컬렉션을 생성합니다. 아래 예제에서는 demo286 컬렉션에 details라는 배열 필드를 포함한 문서를 하나 삽입합니다.> db.demo286.insertOne({details:[{Value1:70,Value2:50},{Value1:30,Val
MongoDB에서 고유한 값 가져오기MongoDB에서 특정 필드의 고유한(distinct) 값만 추출하려면 distinct() 메서드를 사용하면 됩니다. 이 메서드는 단일 컬렉션 또는 뷰 전체에서 지정된 필드의 중복 없는 값들을 찾아 배열(Array) 형태로 반환합니다.1. 샘플 데이터 생성하기먼저 문서가 담긴 컬렉션을 생성해 보겠습니다.> db.demo287.insertOne({"details":{"AllVowels":["a","u","u&quo
MongoDB $eq 연산자의 대안MongoDB에서 동등(equality) 조건을 표현할 때 굳이 $eq 연산자를 명시적으로 사용하지 않아도 됩니다. find() 메서드에 일치시킬 값을 직접 전달하기만 하면, MongoDB가 내부적으로 자동으로 동등 비교를 수행하여 동일한 결과를 반환합니다.실제 예제를 통해 확인해 보겠습니다. 먼저 문서가 포함된 컬렉션을 생성합니다.1. 컬렉션 생성 및 문서 삽입> db.demo145.insertOne({ListOfNames:[Chris,David,Mike]});{ ack
MongoDB에서 배열에 저장된 특정 요소를 삭제하려면 $pull 연산자와 함께 update() 메서드를 사용하면 됩니다. 이 글에서는 실제 예제를 통해 배열 요소를 제거하는 과정을 단계별로 살펴보겠습니다.1. 샘플 컬렉션 생성먼저 직원 이름 목록을 담은 문서를 포함하는 컬렉션을 생성합니다.> db.demo146.insertOne({ListOfEmployeeNames:[Chris,David,Bob,Mike]}); { acknowledged : true, insertedId : ObjectId(5e32f54ffdf09