MongoDB에서 특정 필드의 중복된 값을 제거하고 고유한(unique) 레코드만 조회하려면 distinct() 메서드를 사용하면 됩니다. 이 메서드는 지정한 필드에서 중복을 제거한 값들을 배열 형태로 반환해 줍니다. 1. 샘플 데이터 생성하기 먼저 테스트용 컬렉션을 생성하고 문서를 삽입해 보겠습니다. 의도적으로 동일한 이름이 중복되도록 데이터를 구성했습니다. > db.demo613.insertOne({Name:Chris}); { acknowledged : true, insertedId : ObjectId(5e988bd4
MongoDB에서 새 필드 추가 및 가격 나누기 결과 연결하기MongoDB에서 기존 문서에 새로운 필드를 추가하려면 애그리게이션 파이프라인의 $addFields 연산자를 사용합니다. 이번 글에서는 배열 안에 있는 상품 가격들을 특정 숫자(예: 5)로 나눈 뒤, 그 결과를 하나의 문자열로 연결하여 새 필드에 저장하는 방법을 단계별로 살펴보겠습니다.1. 샘플 컬렉션 생성 및 문서 삽입먼저 예제로 사용할 컬렉션을 만들고 문서를 삽입합니다.> db.demo719.insertOne( ... { ... Number:7
MongoDB에서 필드의 모든 값을 특정 문자열로 변경하기MongoDB에서 컬렉션 내 모든 문서의 특정 필드 값을 동일한 문자열로 변경하려면 update() 메서드와 함께 multi:true 옵션을 사용해야 합니다. 이 옵션을 지정하지 않으면 조건에 일치하는 첫 번째 문서만 수정되므로 주의가 필요합니다.실제 예제를 통해 단계별로 살펴보겠습니다.1단계: 샘플 컬렉션 생성먼저 여러 문서를 포함하는 컬렉션을 생성합니다.> db.demo720.insertOne({"SubjectName":"MySQL"
MongoDB 집계로 여러 필드 기준 개수 세기여러 필드를 기준으로 문서 수를 집계하려면 MongoDB의 $facet 연산자를 활용하면 됩니다. $facet은 단일 단계(single stage) 안에서 동일한 입력 문서 집합에 대해 여러 개의 집계 파이프라인을 동시에 처리할 수 있게 해주는 강력한 기능입니다.먼저 예제에 사용할 컬렉션을 생성하고 문서를 삽입해 보겠습니다.> db.demo721.insertOne(... {... &nb
MongoDB에서 배열 필드나 문서 내부에 포함된 null 값을 제외한 상태로 데이터를 조회해야 할 때가 있습니다. 이럴 때는 집계 파이프라인(aggregate()) 안에서 $ne: null 조건을 사용하면 간단하게 해결할 수 있습니다. 아래 예제를 통해 null 값을 무시하는 구체적인 방법을 단계별로 살펴보겠습니다. 1. 샘플 컬렉션 생성 먼저 데모용 컬렉션을 만들고 문서를 하나 삽입합니다. details 배열에는 빈 문자열(), 일반 문자열, 그리고 null 값이 의도적으로 함께 들어 있어 테스트하기에 적합합니다. > d
MongoDB에서 문서 내 배열 필드에 포함된 요소의 개수를 세고 싶다면, 집계 파이프라인(aggregate)에서 $size 연산자를 사용하면 됩니다. 이 글에서는 실제 예제를 통해 배열 요소 개수를 조회하는 방법을 단계별로 살펴보겠습니다.1. 샘플 컬렉션 생성하기먼저 데모용 컬렉션을 만들고 문서를 삽입합니다. 각 문서는 Subject라는 배열 필드를 가지고 있습니다.> db.demo723.insertOne({Subject:[MySQL,MongoDB]}); { acknowledged : true, insertedId
MongoDB에서 커서 반복 횟수 계산하기MongoDB에서는 커서(cursor)의 반복 횟수를 직접 반환하는 내장 메서드가 없기 때문에, find() 커서와 함께 while 루프를 활용한 사용자 정의 로직을 작성해야 합니다. 커서의 hasNext() 메서드로 다음 문서의 존재 여부를 확인하고, next() 메서드로 문서를 하나씩 가져오면서 조건에 맞는 문서 수를 직접 카운트하는 방식입니다.먼저 문서가 포함된 컬렉션을 생성해 보겠습니다.> db.demo724.insertOne( ... { ...  
MongoDB의 aggregate()에서 조건에 따라 중첩 배열을 필터링하려면 $filter와 $cond 연산자를 사용할 수 있습니다. $filter는 지정된 조건을 만족하는 요소만 골라서 배열의 부분 집합을 반환하는 연산자입니다.이 글에서는 실제 예제를 통해 문서 생성부터 중첩 배열 필터링까지 단계별로 살펴보겠습니다.1. 샘플 컬렉션 생성하기먼저 insertOne() 메서드를 사용해 중첩 배열 구조를 가진 문서를 포함한 컬렉션을 생성합니다.> db.demo725.insertOne( ... { ... det
배열 내부에서 특정 필드의 값에 해당하는 문서의 개수를 세려면 MongoDB의 $match 연산자를 활용하면 됩니다. 먼저 데모용 컬렉션을 생성하고 문서를 삽입해 보겠습니다.> db.demo726.insertOne( ... { ... id:101, ... details: [ ... { ... Na
문서들을 특정 기준으로 묶어 처리하려면 MongoDB의 aggregate() 메서드에서 $group 연산자를 사용하면 됩니다. 이 글에서는 서로 다른 문서에 흩어져 있는 동일한 id 값을 가진 요소들을 하나로 그룹화하는 방법을 단계별로 살펴보겠습니다.1. 컬렉션 생성 및 문서 삽입먼저 예제로 사용할 컬렉션을 만들고 문서를 삽입합니다.> db.demo602.insertOne({id:1,Name:Chris}); { acknowledged : true, insertedId : ObjectId(5e960080ed011c280a0905
MongoDB에서 64비트 정수를 다룰 때 사용하는 NumberLong()은 인자를 어떻게 전달하느냐에 따라 결과가 크게 달라집니다. 숫자 리터럴을 그대로 전달하는 NumberLong(x) 방식은 값이 표현 한계를 넘어 정밀도 손실로 인해 반올림되는 반면, 문자열로 전달하는 NumberLong(x) 방식은 원래 값을 그대로 보존합니다.왜 이런 차이가 발생할까요?mongo 셸은 자바스크립트 기반으로 동작하며, 자바스크립트의 숫자는 IEEE 754 배정밀도 부동소수점 방식으로 표현됩니다. 이 방식은 2의 53제곱(약 9,007조)을 초
MongoDB에서 중복 삽입 방지하기MongoDB 컬렉션에 중복 데이터가 저장되지 않도록 하려면 인덱스 생성 시 unique: true 옵션, 즉 고유(unique) 제약 조건을 설정하면 됩니다. 이렇게 하면 동일한 값의 중복 삽입이 자동으로 차단됩니다.기본 문법은 다음과 같습니다.db.yourCollectionName.ensureIndex({yourFieldName: 1}, {unique: true, dropDups: true})실전 예제로 이해하기위 문법을 실제로 적용해 보겠습니다. 먼저 demo604라는 컬렉션을 생성하고 Fi
MongoDB에서 두 가지 조건에 따라 수량 업데이트하기 배열 안에 있는 특정 요소의 수량(Quantity) 값을 두 가지 조건을 기반으로 수정하려면 update() 메서드를 사용하고, 쿼리 조건 부분에 두 개의 조건을 함께 지정하면 됩니다. 먼저 예제로 사용할 컬렉션을 생성하고 문서를 삽입해 보겠습니다. > db.demo605.insertOne( ... { ... _id:1, ... Information : [ ... { ... id : Product-1, ..
MongoDB에서 중복 ID를 기준으로 평점 평균 구하는 방법MongoDB에서 평균값을 계산하려면 집계 파이프라인(Aggregation Pipeline)의 $avg 연산자를 사용해야 합니다. 이 글에서는 동일한 id가 여러 개 존재하는 문서들을 대상으로, id별 평점(rating) 평균을 구하는 과정을 단계별로 살펴봅니다. 특히 rating 값이 null인 문서가 섞여 있을 때 $ifNull 연산자로 이를 처리하는 방법도 함께 다룹니다.1단계: 샘플 컬렉션 생성 및 문서 삽입먼저 demo606이라는 컬렉션을 만들고 문서를 삽입합니다
MongoDB에서 중첩 문서 업데이트하기MongoDB에서 중첩(nested)되어 있는 문서의 특정 필드를 수정하려면 update() 메서드를 사용하고, 그 안에서 점 표기법(dot notation)을 활용하면 됩니다. 점 표기법은 상위 필드와 하위 필드를 마침표(.)로 연결하여 내부에 위치한 값에 직접 접근할 수 있게 해주는 방식입니다.1. 컬렉션 생성 및 문서 삽입먼저 예제에 사용할 컬렉션을 만들고 문서를 하나 삽입해 보겠습니다.> db.demo607.insertOne( { id: 1, Info1:
MongoDB에서 하나의 문서에 있는 두 배열 사이의 고유한(중복되지 않는) 값을 추출하려면 aggregate() 안에서 $setUnion 연산자를 사용하면 됩니다. $setUnion은 두 개 이상의 배열을 입력받아, 각 입력 배열에 등장하는 모든 요소를 중복 없이 하나의 배열로 합쳐서 반환합니다.1. 테스트용 컬렉션 생성먼저 예제로 사용할 컬렉션을 만들고 문서를 삽입해 보겠습니다.> db.demo608.insertOne({ ... ListOfName1: [John, Chris, Bob, David], ... ListO
MongoDB에서 컬렉션에 저장된 문서에서 배열 필드 전체를 삭제하려면 $unset 연산자를 사용하면 됩니다. $unset은 지정한 필드 자체를 문서에서 완전히 제거하는 연산자입니다. 이번 글에서는 예제 컬렉션을 생성하고, 배열 필드를 모든 문서에서 한 번에 제거하는 과정을 단계별로 살펴보겠습니다.1. 예제 컬렉션 생성먼저 insertOne() 메서드를 사용하여 배열 필드가 포함된 문서 두 개를 생성합니다.> db.demo609.insertOne({ListOfSubject:[MySQL,MongoDB]});{ acknowl
MongoDB 집계에서 배열 요소의 하위 집합 합산하기배열 요소 중 일부(하위 집합)만 골라서 합산하려면 $first 연산자와 $sum 연산자를 함께 사용하면 됩니다. 먼저 문서가 포함된 컬렉션을 생성해 보겠습니다.> db.demo610.insertOne({Values:[10,20,30,40,50]});{ acknowledged : true, insertedId : ObjectId(5e9747b8f57d0dc0b182d62e)}컬렉션 데이터 확인하기find() 메서드를 사용하여 컬렉션의 모든 문서를 조회합
MongoDB에서 문서를 정렬하려면 sort() 메서드를 사용하면 됩니다. 정렬된 결과 중에서 하나의 필드만 표시하고 싶다면, 해당 필드 값을 1로 설정하여 프로젝션(projection)과 함께 사용할 수 있습니다.1. 컬렉션 생성 및 문서 삽입먼저 예제로 사용할 컬렉션에 문서들을 삽입해 보겠습니다.> db.demo611.insertOne({Name:Chris});{ acknowledged : true, insertedId : ObjectId(5e987110f6b89257f5584d83) } > db.demo611.
MongoDB에서 조건에 맞는 여러 문서를 한 번에 가져오려면 $in 연산자를 사용하면 됩니다. $in은 지정한 배열 안의 값과 일치하는 필드를 가진 문서만 골라 조회해 주는 연산자로, 특정 ID나 이름 목록에 해당하는 데이터를 추출할 때 매우 유용합니다. SQL의 WHERE id IN (1, 3) 구문과 같은 역할을 한다고 이해하면 쉽습니다.1. 컬렉션 생성 및 문서 삽입먼저 예제로 사용할 컬렉션을 만들고 insertOne() 메서드로 문서를 차례대로 삽입해 보겠습니다.> db.demo593.insertOne({id:1,Na