MongoDB 배열에서 요소 제거하는 방법MongoDB의 배열(Array) 필드에서 특정 요소를 제거하려면 update() 메서드와 $pull 연산자를 함께 사용하면 됩니다. $pull 연산자는 기존 배열에서 지정한 조건과 일치하는 값 또는 여러 값을 한 번에 모두 제거해 주는 강력한 도구입니다.이 글에서는 실제 예제를 통해 중첩된 배열에서 요소를 삭제하는 과정을 단계별로 살펴보겠습니다.1단계: 컬렉션 생성 및 문서 삽입먼저 예제로 사용할 컬렉션을 만들고 문서를 삽입합니다.db.demo541.insertOne({software:{s
MongoDB에서 배열에 특정 값이 존재하는지 확인하고 부울 값으로 반환하기 배열 필드에 지정한 값이 포함되어 있으면 반환되는 객체에 true 부울 필드를 추가하고, 값이 NULL이거나 일치하는 값이 없으면 false를 설정하는 방법을 소개합니다. MongoDB의 집계(aggregation) 파이프라인과 $ifNull, $setIntersection 연산자를 활용하면 손쉽게 구현할 수 있습니다. $ifNull 연산자의 역할 핵심은 $ifNull 연산자입니다. $ifNull은 표현식을 평가한 뒤, 그 결과가 null이 아니면 표현식
동일한 배열 요소와 일치하는 문서를 찾으려면 find() 메서드 안에서 $all 연산자를 사용하면 됩니다. $all 연산자는 특정 필드의 값이 배열이고, 해당 배열에 지정된 모든 요소가 포함되어 있는 문서만 선택합니다.1. 샘플 데이터 생성먼저 문서가 담긴 컬렉션을 만들어 보겠습니다.> db.demo543.insertOne({id:101, subject:["MySQL", "Java" ,"C","Python"]});{ "ackn
MongoDB에서 데이터를 집계하려면 aggregate() 메서드를 사용합니다. 이 메서드는 컬렉션에 저장된 데이터의 집계 값을 계산할 때 활용됩니다. 먼저 예제용 문서들을 담은 컬렉션을 생성해 보겠습니다. > db.demo544.insertOne({DueTime:new ISODate(2020-01-10 12:10:20),Amount:100}); { acknowledged : true, insertedId : ObjectId(5e8e1f029e5f92834d7f05ce) } > db.demo544.insertO
MongoDB NumberLong 값이란?MongoDB의 mongo 셸(mongo shell)은 64비트 정수를 안전하게 다루기 위해 NumberLong() 래퍼(wrapper)를 제공합니다. 일반적인 JavaScript 숫자 타입은 정밀도 한계로 인해 매우 큰 정수를 정확하게 표현할 수 없기 때문에, 64비트 범위의 정수를 저장하거나 조회할 때는 반드시 NumberLong()을 사용해야 합니다.이 글에서는 NumberLong 값을 변수에 담고, toString() 메서드를 활용해 화면에 출력하는 방법을 예제와 함께 살펴보겠습니다.
MongoDB 집계에서 $match와 $project의 역할MongoDB의 애그리게이션(집계) 파이프라인에서 $match는 지정된 조건과 일치하는 문서만 필터링하여 다음 파이프라인 단계로 전달하는 역할을 합니다. SQL의 WHERE 절과 유사한 기능이라고 생각하면 이해하기 쉽습니다.반면 $project는 요청된 필드만 포함한 문서를 다음 단계로 전달합니다. 즉, 결과에 포함할 필드를 선택하거나 제외하고, 새로운 형태로 필드를 재구성할 수 있습니다.예제 컬렉션 생성먼저 예제로 사용할 컬렉션을 만들고 문서를 삽입해 보겠습니다.>
MongoDB $redact란 무엇인가?$redact는 문서 자체에 저장된 정보를 기준으로 문서의 내용을 제한(필터링)할 수 있는 강력한 집계 연산자입니다. 일반적인 $match가 쿼리 조건에 따라 문서 전체를 걸러내는 것과 달리, $redact는 문서 내부의 필드 값을 실시간으로 평가하여 해당 문서나 하위 문서를 유지하거나 제거할 수 있습니다.$redact는 보통 $cond 연산자와 함께 사용되며, 조건이 참이면 문서를 유지하고 거짓이면 제거하는 방식으로 동작합니다.$redact의 핵심 시스템 변수$$KEEP — 현재 문서(및 하
MongoDB에서 하위 컬렉션 업데이트하기 – $push와 점 표기법 활용MongoDB에서 중첩된 문서(하위 컬렉션) 내부의 데이터를 수정하려면 update() 메서드를 사용하면 됩니다. $push 연산자로 지정한 값을 배열 끝에 추가하고, 점 표기법(dot notation)을 이용해 하위 필드까지 경로를 지정하면 한 번의 업데이트 작업으로 원하는 위치의 값을 손쉽게 변경할 수 있습니다.1단계: 샘플 컬렉션 생성먼저 테스트에 사용할 문서를 포함한 컬렉션을 생성합니다.> db.demo547.insertOne(... {... &n
MongoDB에서는 skip() 메서드를 사용하여 특정 개수의 문서를 건너뛸 수 있습니다. 여기에 limit() 메서드를 함께 사용하면, 문서를 건너뛴 이후에 표시할 문서의 개수까지 지정할 수 있습니다. 예제 컬렉션 생성 및 문서 삽입 먼저 실습에 사용할 컬렉션을 만들고 문서들을 삽입해 보겠습니다. > db.demo682.insertOne({FirstName:John}); { acknowledged : true, insertedId : ObjectId(5ea462a804263e90dac94402) } >
MongoDB에서 컬렉션의 문서 수를 제한하는 방법MongoDB에서 하나의 컬렉션에 저장할 수 있는 문서의 개수를 제한하고 싶다면 Capped(고정 크기) 컬렉션을 사용해야 합니다. 일반적인 컬렉션은 데이터가 계속 쌓이지만, Capped 컬렉션은 미리 정해둔 용량이나 문서 수에 도달하면 가장 오래된 문서부터 자동으로 삭제되는 특징이 있습니다.1. Capped 컬렉션 생성하기컬렉션 생성 시 capped: true 옵션을 설정하고, 함께 size(최대 용량, 바이트 단위)와 max(최대 문서 수) 값을 지정합니다.> db.crea
MongoDB에서 데이터베이스 이름에 하이픈(-)과 같은 특수 문자가 포함되어 있으면 use 명령만으로는 해당 데이터베이스를 제대로 다루기 어렵습니다. 이런 경우 getSiblingDB() 메서드를 사용하면 문제를 간단히 해결할 수 있습니다. 1. 특수 문자가 있는 데이터베이스 생성 및 문서 삽입 use customer_tracker-990 명령으로 데이터베이스를 전환한 뒤, insertOne() 메서드를 사용해 문서를 추가해 보겠습니다. > use customer_tracker-990; switched to db custom
MongoDB에서 역할에 따라 이름(Name) 필드만 조회하려면 aggregate() 메서드를 사용하면 됩니다. 이번 예제에서는 Admin, Guest, User 세 가지 역할을 기준으로 단계별로 살펴보겠습니다.1. 컬렉션 생성 및 문서 삽입먼저 insertOne() 메서드를 사용해 컬렉션에 문서를 생성합니다. db.demo532.insertOne({Name:Bob,Type:User});{ acknowledged : true, insertedId : ObjectId(5e8b4ab0ef4dcbee04fbbbfb) }2. f
MongoDB $addToSet 연산자란?$addToSet 연산자는 배열에 값을 추가하는 연산자입니다. 단, 해당 값이 이미 배열에 존재하는 경우에는 아무 작업도 수행하지 않습니다. 이러한 특성 덕분에 중복 없는 고유한 값들의 집합(set)을 만들 때 매우 유용하게 사용됩니다.이번 글에서는 $addToSet과 집계 파이프라인의 $group 단계를 조합하여, 컬렉션 내 특정 단일 필드(ProjectName)의 중복되지 않은 값들을 한 번에 가져오는 방법을 알아보겠습니다.1. 샘플 컬렉션 생성먼저 문서들이 담긴 컬렉션을 생성합니다.&g
MongoDB에서 집계(aggregate()) 파이프라인 내의 $group 연산자를 사용하면 지정된 _id 표현식을 기준으로 입력 문서들을 그룹화하고, 각 고유한 그룹마다 하나의 문서를 출력할 수 있습니다. 이번 글에서는 카운트 정보를 담는 새로운 필드와 함께 구조화된 형태로 결과를 조회하는 방법을 알아보겠습니다.1. 샘플 컬렉션 생성 및 데이터 삽입먼저 insertOne() 메서드를 사용해 컬렉션을 생성하고 문서를 삽입합니다.> db.demo534.insertOne({_id:10,ProductId:100,ProductName
MongoDB에서 배열 값 삭제하기MongoDB에서 배열에 저장된 특정 값을 삭제하려면 $pull 연산자를 사용하면 됩니다. $pull은 기존 배열에서 지정한 조건과 일치하는 값을 모두 제거하는 업데이트 연산자입니다.이 글에서는 실제 예제를 통해 $pull 연산자의 사용 방법을 단계별로 살펴보겠습니다.1. 테스트용 컬렉션 생성먼저 예제로 사용할 컬렉션을 만들고 문서를 삽입합니다. 학생 정보와 이메일 주소 목록을 배열 형태로 저장하는 구조입니다.> db.demo535.insertOne( ... { ... studentId
여러 필드를 기준으로 데이터를 그룹화하고, 함께 묶인 중복 필드 값의 개수까지 확인하려면 MongoDB의 aggregate 집계 파이프라인과 $cond 연산자를 활용하면 됩니다. $cond는 불리언 표현식을 평가하여, 조건이 참일 때와 거짓일 때 지정된 두 반환 표현식 중 하나를 반환하는 연산자입니다.이 방법은 Name1과 Name2처럼 두 필드에 저장된 값의 순서만 다른 경우(예: Chris-David과 David-Chris)에도 같은 그룹으로 묶어 개수를 집계할 때 특히 유용합니다.1단계: 컬렉션 생성 및 문서 삽입먼저 demo
MongoDB에서 하위 문서(sub-document)에 포함된 필드를 조회하려면 점 표기법(dot notation)을 사용해야 합니다. 점 표기법은 상위 필드와 하위 필드를 마침표(.)로 연결하여 중첩된 데이터에 접근하는 방식입니다. 1. 샘플 컬렉션 생성하기 먼저 하위 문서를 포함하는 문서들을 담은 컬렉션을 생성하겠습니다. insertOne() 메서드를 사용하여 세 개의 문서를 삽입합니다. > db.demo537.insertOne({details:{SubjectName:MongoDB}}); { acknowledged :
MongoDB에서 문서(document) 내부에 포함된 하위 문서(subdocument)를 제거하려면 update() 메서드와 함께 $pull 연산자를 사용하면 됩니다. 이 글에서는 실제 예제를 통해 하위 문서를 삭제하는 과정을 단계별로 살펴보겠습니다. 1. 테스트용 컬렉션 생성 먼저 예제 문서가 포함된 컬렉션을 생성합니다. 아래 예제에서는 details.anotherDetails라는 배열 안에 여러 개의 하위 문서가 들어 있는 구조입니다. > db.demo538.insertOne( ... { ... id: 101, .
MongoDB 배열 요소로 특정 문서 가져오기MongoDB에서 배열 안에 포함된 문서(내장 문서) 중 특정 조건에 맞는 데이터를 조회하려면 점 표기법(dot notation)을 find() 메서드와 함께 사용하면 됩니다. 이 방법은 배열 내부의 필드에 직접 접근할 수 있어 매우 유용합니다.먼저 예제로 사용할 컬렉션을 생성하고 문서를 삽입해 보겠습니다.> db.demo672.insertOne({Brand:[{CategoryName:Mobile,Name:Oppo}]}); { acknowledged : true, in
MongoDB에서 db.<컬렉션명>.stats() 명령어 실행 결과에 나타나는 max 필드는 해당 컬렉션에 저장할 수 있는 문서(document)의 최대 개수를 의미합니다. 이 값은 주로 캡드(capped) 컬렉션을 생성할 때 설정되며, 지정한 개수를 초과하는 문서가 삽입되면 가장 오래된 문서부터 자동으로 삭제됩니다.max 필드를 사용한 캡드 컬렉션 생성max 필드는 컬렉션에 저장되는 문서 수를 제한하는 용도로 사용됩니다. 아래 예제처럼 createCollection() 메서드에 capped 옵션과 함께 size, max