개요MongoDB에서 하나의 도큐먼트에 포함된 객체 배열 안에서 서로 다른 객체의 속성 값을 비교해야 하는 경우가 있습니다. 이럴 때는 $let 연산자와 $indexOfArray 연산자를 함께 사용하면 간단하게 해결할 수 있습니다.이 글에서는 예제 컬렉션을 만들고, 배열 내 특정 객체들을 찾아 그 속성 값을 비교하는 쿼리를 단계별로 살펴보겠습니다.1. 컬렉션 생성 및 문서 삽입먼저 insertOne() 메서드를 사용하여 샘플 문서가 담긴 컬렉션을 생성합니다.> db.demo366.insertOne( ... { ...
MongoDB에서 컬렉션의 문서(레코드)를 정렬하려면 sort() 메서드를 사용합니다. 이번 글에서는 예제 컬렉션을 만들고, sort()를 활용해 데이터를 오름차순으로 정렬하는 과정을 단계별로 살펴보겠습니다.1. 샘플 컬렉션 생성먼저 insertOne() 메서드를 사용해 demo32 컬렉션에 문서들을 추가합니다.> db.demo32.insertOne({Name:Chris}); { acknowledged : true, insertedId : ObjectId(5e175158cfb11e5c34d898c5) } > d
MongoDB에서 배열 길이를 기준으로 문서 정렬하기MongoDB에서 배열 필드의 요소 개수(길이)를 기준으로 문서를 정렬하려면 aggregate() 메서드를 사용합니다. 정렬에 앞서 $sum 연산자로 배열 내 레코드 수를 계산하고, $unwind로 배열을 개별 문서로 분해한 뒤 그룹화하는 과정을 거칩니다.아래에서 전체 과정을 단계별로 살펴보겠습니다.1단계: 컬렉션 생성 및 문서 삽입먼저 데모용 컬렉션을 만들고 학생 목록 배열을 가진 문서들을 삽입합니다.> db.demo33.insertOne({ListOfStudent:[Chr
MongoDB에서 특정 문서를 수정하려면 update() 메서드를 사용하고, 변경할 새로운 값은 $set 연산자로 지정합니다. 이 글에서는 ObjectId(_id)를 기준으로 컬렉션의 행(문서)을 업데이트하는 과정을 단계별로 살펴보겠습니다.1. 샘플 컬렉션 생성하기먼저 insertOne() 메서드를 사용해 demo34 컬렉션에 문서 세 개를 생성합니다.> db.demo34.insertOne({StudentFirstName:Chris,StudentAge:24}); { acknowledged : true, inserte
MongoDB에서 특정 필드의 존재 여부(true/false)를 기준으로 문서를 조회하려면 find() 메서드와 함께 $exists 연산자를 사용하면 됩니다. 배열 내부의 중첩된 필드를 검색할 때는 점 표기법(dot notation)을 활용해야 합니다.이 글에서는 실제 예제를 통해 $exists 연산자를 사용하는 방법을 단계별로 살펴보겠습니다.1. 샘플 컬렉션 생성먼저 예제에 사용할 문서들을 담은 컬렉션을 생성합니다.> db.demo367.insertOne( ... { Id : 102, ... details :
MongoDB에서 쿼리를 실행할 때 NULL 또는 UNDEFINED 값이 저장된 문서를 결과에서 제외하고 싶다면 $ne(not equal) 연산자를 사용하면 됩니다. 이번 글에서는 실제 예제를 통해 NULL과 UNDEFINED 값을 무시하는 방법을 단계별로 살펴보겠습니다.1. 테스트용 컬렉션 생성 및 데이터 삽입먼저 다양한 값(문자열, null, undefined)을 포함하는 컬렉션을 생성합니다.> db.demo35.insertOne({Name:Chris}); { acknowledged : true, inserted
MongoDB에서 배열 필드에 저장된 값들 중 중복을 제거한 고유한(distinct) 값의 개수를 구하고 싶다면 distinct() 메서드와 length 속성을 함께 사용하면 됩니다. 이번 글에서는 예제 컬렉션을 만들고, 배열 내 고유 값의 총 개수를 조회하는 과정을 단계별로 살펴보겠습니다.1. 예제 컬렉션 생성하기먼저 insertOne() 메서드를 사용해 문서를 담은 컬렉션을 생성합니다.> db.demo36.insertOne({Names:[Chris,Bob]}); { acknowledged : true, inser
MongoDB에서는 컬렉션 이름에 문자와 숫자가 혼합되어 있어도 문제없이 사용할 수 있습니다. 다만 일반적인 db.컬렉션이름 형식의 점 표기법(dot notation)으로는 접근하기 어려우므로, db.getCollection() 메서드를 활용해야 합니다.1. 문자와 숫자가 섞인 컬렉션 생성하기먼저 아래와 같은 이름을 가진 컬렉션을 생성해 보겠습니다.7664734-541d-r5i5f-845575e-ghfhjrjr3747_demo3682. db.createCollection()으로 컬렉션 만들기db.createCollection() 메
MongoDB의 deleteOne() 함수란?MongoDB의 deleteOne() 함수는 컬렉션에서 지정한 조건과 일치하는 문서 중 최대 한 개만 삭제합니다. 여러 개의 문서가 같은 조건에 일치하더라도 가장 먼저 발견된 문서 하나만 제거되며, 나머지 문서는 그대로 유지됩니다.이번 글에서는 실제 예제를 통해 deleteOne() 함수의 동작 방식을 단계별로 살펴보겠습니다.1단계: 테스트용 컬렉션 생성하기먼저 insertOne() 메서드를 사용해 demo363이라는 컬렉션에 문서들을 생성합니다. 예제에서는 Chris라는 이름을 가진 문
MongoDB에서 필드 이름에 점(.)이 포함된 경우, 일반적인 도트 표기법(dot notation)으로는 해당 필드에 접근하기 어렵습니다. 이럴 때 $addFields 연산자를 활용하면 됩니다. 내부적으로 $objectToArray를 사용해 데이터를 키(key)와 값(value) 형태의 배열로 변환한 뒤, $filter와 $indexOfBytes를 조합하여 키 안에 점이 포함되어 있는지 확인할 수 있습니다.1. 샘플 컬렉션 생성하기먼저 점이 포함된 키를 가진 문서들로 컬렉션을 생성해 보겠습니다.> db.demo364.inse
MongoDB에서 특정 필드 값 정렬하기MongoDB에서 문서를 정렬하려면 sort() 메서드를 사용합니다. sort()는 필드 이름과 정렬 방향을 지정하는 객체를 인자로 받으며, 1은 오름차순(ascending), -1은 내림차순(descending)을 의미합니다.먼저 예제에 사용할 컬렉션을 생성하고 문서를 삽입해 보겠습니다.> db.demo365.insertOne({FirstName:Chris}); { acknowledged : true, insertedId : ObjectId(5e57d5b6d0ada61456d
MongoDB에서 배열 안에 포함된 하위 문서(sub-document)를 정렬하려면 aggregate 집계 파이프라인과 $sort 연산자를 함께 사용해야 합니다. 이번 글에서는 학생 정보 배열을 이름(Name) 기준으로 오름차순 정렬하는 실전 예제를 단계별로 살펴보겠습니다.1단계: 컬렉션 생성 및 문서 삽입먼저 insertOne() 메서드를 사용하여 StudentDetails라는 하위 배열을 가진 문서를 생성합니다.> db.demo23.insertOne(...{...... StudentDetails : [{...
MongoDB에서 $group 단계 내부에 계산된 표현식을 배열로 추가하려면 aggregate() 메서드를 사용하면 됩니다. 이 글에서는 샘플 컬렉션을 생성한 뒤, $push 연산자와 $cond 조건식을 함께 활용해 그룹화 과정에서 동적으로 계산된 값을 배열에 담는 방법을 단계별로 살펴보겠습니다.1. 샘플 데이터 생성먼저 다음과 같이 문서들이 담긴 컬렉션을 생성합니다.> db.demo24.insertOne({Id:100,Status:true}); { acknowledged : true, insertedId : O
MongoDB에서 배열 내 객체의 일부로 쿼리하는 방법배열 안에 포함된 객체의 특정 필드 값을 기준으로 문서를 조회하려면 findOne() 메서드와 $all 연산자를 함께 사용하면 됩니다. 아래 예제를 통해 전체 과정을 단계별로 살펴보겠습니다.1. 샘플 컬렉션 생성하기먼저 insertOne() 메서드를 사용하여 Details라는 배열 필드를 가진 문서 두 개를 컬렉션에 삽입합니다.> db.demo25.insertOne(... {... "Details":[... {... &quo
개요SQL에서 자주 사용하는 LIKE 연산과 유사한 기능을 MongoDB에서 구현하려면 정규 표현식(Regular Expression)을 활용하면 됩니다. 예를 들어 특정 문자열이 포함된 문서를 검색하려면 /검색문자/ 형태로 패턴을 지정하면 됩니다.먼저 예제에 사용할 컬렉션을 생성하고 문서를 삽입해 보겠습니다.컬렉션 생성 및 문서 삽입> db.demo26.insertOne({"StudentName":"Chris"});{ "acknowledged"
네, 가능합니다. MongoDB에서는 update() 메서드를 사용하면 동일한 업데이트 작업 안에서 $addToSet 연산자를 여러 번 활용할 수 있습니다. $addToSet은 배열에 값을 추가하되, 이미 존재하는 값은 중복해서 넣지 않는 연산자로, 중복 없는 배열을 유지할 때 매우 유용합니다. 1. 컬렉션 생성 및 문서 삽입 먼저 문서가 담긴 컬렉션을 생성해 보겠습니다. > db.demo27.insertOne({"StudentDetails":{"101":{"Subject"
MongoDB 컬렉션 이름에 마침표(.) 기호를 사용할 수 있을까?결론부터 말하면 가능합니다. MongoDB에서는 컬렉션 이름에 마침표(.) 기호를 포함할 수 있습니다. 다만 한 가지 주의할 점이 있습니다. 마침표가 들어간 컬렉션은 일반적인 점 표기법(db.컬렉션명)으로는 접근할 수 없으며, 반드시 db.getCollection() 메서드를 사용해야 합니다.마침표가 포함된 컬렉션 생성 및 문서 삽입아래 예제는 demo28.example이라는 이름의 컬렉션을 생성하고, 세 개의 문서를 차례로 삽입하는 과정입니다.> db.getC
MongoDB 문서에서 배열 항목 조회하기MongoDB 문서 내부에 저장된 배열(array)의 특정 항목을 조회하려면 점(.) 표기법(dot notation)을 사용하면 됩니다. 점 표기법은 배열 필드 이름과 그 안의 하위 필드를 마침표로 연결하여 중첩된 데이터에 접근할 수 있게 해주는 MongoDB의 기본 문법입니다.이번 글에서는 실제 예제를 통해 점 표기법으로 배열 항목을 조회하는 방법을 단계별로 살펴보겠습니다.1단계: 샘플 컬렉션 생성먼저 학생 정보가 담긴 배열을 포함한 문서로 컬렉션을 생성해 보겠습니다. insertOne()
여러 개의 날짜 필드 중에서 가장 오래된(최소) 날짜를 찾아야 하는 경우가 종종 있습니다. MongoDB에서는 aggregate() 파이프라인과 $min 연산자를 활용하면 이 작업을 손쉽게 처리할 수 있습니다. 지금부터 실제 예제를 통해 단계별로 살펴보겠습니다. 1. 샘플 컬렉션 생성하기 먼저 세 개의 날짜 키(Date1, Date2, Date3)를 가진 문서들을 담은 컬렉션을 생성합니다. > db.demo353.insertOne({Date1:new ISODate(2019-01-10),Date2:new ISODate(2016-
MongoDB에서 특정 필드를 기준으로 데이터를 그룹화한 뒤, 각 그룹에 속한 고유(unique) 값의 개수를 구하려면 aggregate() 메서드와 $group 연산자를 함께 사용하면 됩니다. 이 글에서는 실제 예제를 통해 단계별로 살펴보겠습니다.1. 샘플 컬렉션 생성하기먼저 테스트에 사용할 컬렉션을 만들고 문서를 삽입합니다.> db.demo354.insertOne({Name1:Chris,Name2:David}); { acknowledged : true, insertedId : ObjectId(5e5685a6f86