MongoDB에서는 문서 안에 어떤 필드(키)가 들어 있을지 사전에 알 수 없는 경우에도 원하는 값을 가진 문서를 검색할 수 있습니다. 이때 활용하는 것이 바로 $addFields와 $objectToArray 집계 연산자입니다. $objectToArray는 도큐먼트를 { k: 키, v: 값 } 형태의 배열로 변환해 주기 때문에, 키 이름을 몰라도 값에 접근할 수 있다는 장점이 있습니다.1. 샘플 컬렉션 생성 및 문서 삽입먼저 예제에 사용할 컬렉션을 만들고 문서를 삽입해 보겠습니다.> db.demo375.insertOne( ..
MongoDB 셸에서 데이터베이스 목록을 확인할 때 사용하는 show dbs와 show databases 명령어에 대해 궁금해하는 개발자가 많습니다. 결론부터 말하면, 두 명령어 사이에는 어떠한 차이도 없습니다.내부 동작 원리두 명령어는 이름만 다를 뿐, 내부적으로는 완전히 동일하게 동작합니다. MongoDB 셸은 두 명령을 모두 listDatabases 관리 명령으로 변환하여 서버에 전달하기 때문에, 실행 결과도 항상 같습니다. 따라서 자신이 읽기 편한 쪽을 골라 사용하면 됩니다.show dbs 명령어 사용 예시먼저 show db
MongoDB에서는 system.js라는 시스템 컬렉션을 활용하여 자바스크립트 함수를 저장하고 재사용할 수 있습니다. 서버 측에서 반복적으로 사용해야 하는 로직이 있다면 이 컬렉션에 함수를 등록해 두고 필요할 때마다 호출하는 방식으로 효율성을 높일 수 있습니다.1. system.js에 함수 저장하기먼저 저장할 함수를 만들어 보겠습니다. db.collection.save() 메서드를 사용하면 system.js 컬렉션에 함수를 등록할 수 있습니다. 다음은 간단한 인사말을 반환하는 displayMessage 함수를 저장하는 쿼리입니다.&
MongoDB에서 집계 후 업데이트하는 방법MongoDB에서 문서를 업데이트할 때는 애그리게이션 파이프라인(aggregation pipeline)을 직접 사용할 수 없습니다. 업데이트 작업에는 update() 메서드를 사용해야 하며, arrayFilters 옵션을 함께 활용하면 배열 안에서 특정 조건을 만족하는 요소만 선택적으로 수정할 수 있습니다.이번 튜토리얼에서는 학생 정보가 담긴 배열에서 조건에 맞는 요소의 나이(Age) 값을 증가시키는 예제를 단계별로 살펴보겠습니다.1단계: 샘플 데이터로 컬렉션 생성하기먼저 insertOne
MongoDB에서 정수형 배열을 하나의 문자열로 합치려면 aggregate() 파이프라인 내에서 $concat 연산자를 활용하면 됩니다. 아래 예제를 통해 전체 과정을 단계별로 살펴보겠습니다. 1단계: 컬렉션 생성 및 문서 삽입 먼저 테스트에 사용할 컬렉션을 만들고 정수 배열을 포함한 문서를 하나 삽입합니다. > db.demo377.insertOne({ListOfIds:[1001,1002,1003,1004,1005,1006,1007]}); { acknowledged : true, insertedId : Object
MongoDB에서 하위 문서 조작하기MongoDB에서 배열 안에 포함된 하위 문서(subdocument)를 조작하려면 점(.) 표기법을 사용해야 합니다. 이 표기법을 활용하면 배열 내 특정 요소의 필드에 정확하게 접근하여 값을 수정할 수 있습니다. 이번 글에서는 실제 예제를 통해 하위 문서를 생성하고, 조회하고, 업데이트하는 과정을 단계별로 살펴보겠습니다.1. 샘플 컬렉션 생성먼저 insertOne() 메서드를 사용하여 문서가 담긴 컬렉션을 생성합니다. 이 예제에서는 details라는 배열 필드 안에 두 개의 하위 문서를 포함시킵니
MongoDB에서 특정 중첩 속성에 대해 프로젝션(projection)을 수행하려면 aggregate() 메서드를 사용해야 합니다. 일반적인 find()의 프로젝션으로는 깊은 중첩 구조 내부의 특정 키만 선택적으로 필터링하기 어렵기 때문인데, 이때 집계 파이프라인의 $objectToArray, $filter, $arrayToObject 연산자를 조합하면 원하는 결과를 얻을 수 있습니다.1. 샘플 컬렉션 생성먼저 중첩된 문서를 포함하는 컬렉션을 생성해 보겠습니다.> db.demo379.insertOne( ... { ...
MongoDB의 $addToSet 연산자는 배열에 새로운 값을 추가할 때 사용됩니다. 단, 추가하려는 값이 이미 배열에 존재한다면 중복 없이 그대로 유지되며 아무런 변경도 일어나지 않습니다. 이러한 특성 덕분에 집합(set)처럼 중복을 허용하지 않는 배열을 관리할 때 매우 유용합니다.예제 컬렉션 생성하기먼저 문서를 포함하는 컬렉션을 생성해 보겠습니다.> db.demo380.insertOne({ ... details : [ ... { ... Name : Chris, ... deta
MongoDB에서 특정 하위 문서 선택하기MongoDB에서 배열 안에 포함된 특정 하위 문서(subdocument)만 조회하고 싶다면 find() 메서드에 조건과 프로젝션을 함께 사용하면 됩니다. 이 글에서는 예제를 통해 단계별로 살펴보겠습니다.1단계: 컬렉션 생성 및 문서 삽입먼저 insertOne() 메서드를 사용해 데모용 컬렉션에 문서를 생성합니다.> db.demo37.insertOne({Details:[{Name:Chris,Age:21},{Name:David,Age:23}]}); { acknowledged : tr
MongoDB에서 문자열 타입으로 저장된 숫자 데이터를 int 타입으로 변환해야 하는 경우가 종종 있습니다. 예를 들어, 가격이나 수량 같은 필드가 실수로 문자열로 저장되었다면 정렬, 집계, 수치 연산 등에서 문제가 발생할 수 있습니다. 이럴 때 parseInt() 함수를 활용하면 간단하게 해결할 수 있습니다.샘플 컬렉션 생성하기먼저 문자열 형태의 가격 데이터를 가진 문서들로 컬렉션을 생성해 보겠습니다.> db.demo369.insertOne({Price:1000000}); { acknowledged : true,
MongoDB에서 find() 쿼리를 통해 배열 안의 값을 검색하려면 점 표기법(dot notation)을 사용하면 됩니다. 점 표기법은 배열 내부에 포함된 임베디드 문서(내장 문서)의 필드에 직접 접근할 수 있게 해주는 MongoDB의 강력한 기능입니다.테스트용 컬렉션 생성하기먼저 실습을 위해 문서가 포함된 컬렉션을 생성해 보겠습니다.> db.demo38.insertOne({ClientDetails:[{ClientId:101,ClientName:Chris}]}); { acknowledged : true, inser
MongoDB $all 연산자란?배열 필드에서 요소의 순서에 관계없이 특정 조건과 일치하는 문서를 조회하려면 MongoDB의 $all 연산자를 사용하면 됩니다. $all 연산자는 필드의 값이 지정된 모든 요소를 포함하고 있는 배열일 때 해당 문서를 선택합니다.샘플 데이터 생성먼저 demo370이라는 컬렉션을 만들고 두 개의 문서를 삽입해 보겠습니다.> db.demo370.insertOne(... {... Name
MongoDB에서 배열(리스트) 안에 있는 특정 항목만 골라서 업데이트해야 하는 경우가 종종 있습니다. 이럴 때 위치 연산자($)를 사용하면 조건에 일치하는 배열 요소를 정확히 지정할 수 있고, 필드 값을 1씩 증가시키려면 $inc 연산자를 함께 사용하면 됩니다.이 글에서는 실제 예제를 통해 배열 내 단일 항목의 가격 값을 1씩 증가시키는 과정을 단계별로 살펴보겠습니다.1단계: 컬렉션 생성 및 문서 삽입먼저 제품 정보를 담은 컬렉션을 만들고 문서를 삽입합니다. 각 문서에는 ProductDetails라는 배열 필드가 포함되어 있습니다
MongoDB에서 특정 데이터베이스의 컬렉션 목록 확인하기MongoDB에서 특정 데이터베이스에 포함된 컬렉션들을 확인하려면 먼저 use 명령어를 사용해 해당 데이터베이스로 전환해야 합니다. 그런 다음 db.getCollectionNames() 메서드를 호출하면 됩니다.기본 문법use yourDatabaseName; db.getCollectionNames();실제 사용 예제위 문법을 실제로 적용하여 web이라는 데이터베이스의 컬렉션 목록을 조회해 보겠습니다.> use web switched to db web > db.get
MongoDB에서 특정 필드로 검색하기MongoDB에서 여러 필드에 걸쳐 조건을 지정해 문서를 검색하려면 $or 연산자를 사용할 수 있습니다. $or 연산자는 배열 안의 조건 중 하나라도 만족하는 모든 문서를 반환합니다.먼저 예제로 사용할 컬렉션을 생성하고 문서를 삽입해 보겠습니다.> db.demo371.insertOne({Name:David,CountryName:US}); { acknowledged : true, insertedId : ObjectId(5e57f6982ae06a1609a00af2) } > db
MongoDB에서 새로운 객체를 생성하고 저장된 객체를 그대로 확인하려면 save() 메서드를 사용하면 됩니다. 먼저 기본 구문부터 살펴보겠습니다.var anyVariableName=yourValue db.anyCollectionName.save(yourVariableName); yourVariableName;새 객체 생성하기예시를 위해 학생 정보를 담은 객체를 하나 생성해 보겠습니다.> var studentDetails={"StudentName":"Chris","ListOfMark
MongoDB에서 기본 키(Primary Key) 역할을 하는 _id 필드는 한 번 생성되면 직접 수정할 수 없습니다. 따라서 기본 키를 변경하려면 기존 문서를 삭제한 뒤 새로운 _id가 자동으로 부여되도록 다시 삽입하는 방식을 사용해야 합니다. 이 작업은 forEach() 메서드와 함께 삭제(remove) 작업을 조합하여 손쉽게 처리할 수 있습니다.1. 샘플 컬렉션 생성먼저 실습에 사용할 컬렉션을 만들고 문서를 하나 삽입해 보겠습니다.> db.demo41.insertOne({StudentName:Carol}); { a
MongoDB $ifNull 연산자란?MongoDB의 $ifNull 연산자는 지정한 표현식을 평가하여, 그 결과가 null이 아니면 해당 값을 그대로 반환하고, null이거나 필드 자체가 존재하지 않으면 미리 정의한 대체 값을 반환합니다. 주로 집계 파이프라인의 $project 단계에서 누락된 데이터나 null 값에 기본값을 채워 넣을 때 매우 유용하게 사용됩니다.샘플 컬렉션 생성하기먼저 실습에 사용할 문서들을 담은 컬렉션을 생성해 보겠습니다.> db.demo372.insertOne({FirstName:Chris}); {
MongoDB에서 컬렉션에 저장된 데이터 중 특정 조건에 맞는 도큐먼트만 조회하고 싶다면 find() 메서드를 활용하면 됩니다. 이 글에서는 샘플 컬렉션을 만들고, 전체 데이터를 확인한 뒤, 특정 도시에 해당하는 레코드만 검색하는 과정을 단계별로 살펴보겠습니다.1. 샘플 컬렉션 생성하기먼저 insertOne() 메서드를 사용해 demo30이라는 컬렉션에 도시 정보가 담긴 도큐먼트들을 삽입합니다. 여기서는 New York, Los Angeles, Chicago 세 도시를 사용하며, Los Angeles는 두 번 저장되어 중복 데이터
MongoDB에서 특정 쿼리가 인덱스를 사용하지 않도록 강제하고 싶다면 hint() 메서드를 활용하면 됩니다. hint()에 { $natural: 1 } 옵션을 지정하면 MongoDB는 기존 인덱스를 모두 무시하고 컬렉션을 자연스러운(natural) 순서, 즉 디스크에 저장된 순서대로 처음부터 끝까지 스캔하는 BasicCursor(컬렉션 스캔) 방식으로 쿼리를 실행합니다.이 기법은 인덱스 사용 여부에 따른 성능 차이를 비교하거나, 쿼리 플래너의 동작을 디버깅할 때 유용하게 활용됩니다.1. 테스트 컬렉션 생성 및 데이터 삽입먼저 de