MongoDB에서 배열에 저장된 특정 요소를 삭제하려면 $pull 연산자를 사용하면 됩니다. $pull은 지정한 조건과 일치하는 값을 배열에서 모두 제거해 주는 업데이트 연산자로, 단일 값이나 $in 조건을 함께 사용하면 여러 값을 한 번에 삭제할 수도 있습니다.1. 테스트용 컬렉션 생성먼저 예제 문서가 포함된 컬렉션을 생성하겠습니다.> db.demo125.insertOne({ListOfNames:[John,Chris,Bob,David,Carol]}); { acknowledged : true, insertedId
MongoDB 배열 값 기반 집계로 값 합산하기MongoDB에서 배열 필드의 값을 기준으로 그룹화하고, 해당 값에 맞는 다른 문서들의 수치를 합산하려면 aggregate() 메서드를 사용하면 됩니다. 이 과정은 크게 세 단계로 진행됩니다.배열을 개별 문서로 펼치는 $unwind기준 필드로 묶는 $group합계를 계산하는 $sum 연산자실제 예제를 통해 하나씩 살펴보겠습니다.1단계: 컬렉션 생성 및 문서 삽입먼저 학생 정보를 담은 컬렉션을 생성하고 문서를 삽입합니다. 각 문서는 StudentDetails 객체 안에 번호와 여러 명의
MongoDB distinct() 메서드로 고유한 값 추출하기MongoDB에서 컬렉션의 특정 필드(열)에 저장된 값 중 중복을 제거한 고유한 값만 조회하려면 distinct() 메서드를 사용하면 됩니다. 이 메서드는 지정한 필드의 모든 값을 스캔한 뒤, 중복을 제거한 배열 형태로 결과를 반환합니다.실제 동작을 확인하기 위해 먼저 샘플 문서들이 담긴 컬렉션을 생성해 보겠습니다.1. 샘플 컬렉션 생성insertOne() 메서드를 사용해 demo128 컬렉션에 여러 개의 문서를 삽입합니다. 의도적으로 같은 이름이 반복되도록 데이터를 구성
MongoDB로 문자열에서 고유한 첫 단어 얻기문자열에서 중복 없는(distinct) 첫 번째 단어를 추출하려면 JavaScript의 split() 메서드를 활용하면 됩니다. MongoDB의 distinct() 함수와 map()을 조합하면 손쉽게 원하는 결과를 얻을 수 있습니다.먼저 예제에 사용할 컬렉션을 생성하고 문서를 삽입해 보겠습니다.> db.demo129.insertOne({Words:This is the MySQL,CountryName:US}); { acknowledged : true, insertedId
MongoDB 컬렉션 생성 및 문서 삽입 먼저 문서를 담고 있는 컬렉션을 생성해 보겠습니다. > db.demo130.insertOne( ... { ... "PlayerDetails":[{Score:56},{Score:78},{Score:89},{Score:97}] ... } ... ); { "acknowledged" : true, "insertedId" : ObjectId("5e3065bf68e7f832db1a7f6d") }
MongoDB 집계로 배열 내 객체 속성 합산하기배열 필드 안에 중첩된 객체들의 특정 속성 값을 여러 문서에 걸쳐 합산하려면 MongoDB의 aggregate() 메서드를 사용해야 합니다. 이 글에서는 플레이어 점수 데이터를 예로 들어, 배열 안 객체의 개별 속성을 그룹별로 합산하는 방법을 단계별로 살펴보겠습니다.1단계: 샘플 컬렉션 생성먼저 문서가 담긴 컬렉션을 생성합니다.> db.demo131.insertOne(... {... &n
MongoDB에서 두 개의 열을 기준으로 그룹화하기두 개의 열(필드)에 걸쳐 데이터를 그룹화하려면 $lookup 연산자를 활용하면 됩니다. 이 글에서는 실제 예제를 통해 동일한 컬렉션 안에서 서로 다른 두 필드를 연결하고 값을 합산하는 방법을 단계별로 살펴보겠습니다.1. 샘플 컬렉션 생성먼저 예제로 사용할 문서들이 담긴 컬렉션을 생성합니다.> db.demo132.insertOne({"CountryName1":"US","CountryName2":"UK",Va
MongoDB에서 날짜 데이터를 주별 또는 월별로 묶어 통계를 내고 싶다면 집계 파이프라인(Aggregation Pipeline)의 $week와 $month 연산자를 활용하면 됩니다. 이 글에서는 실제 예제를 통해 날짜 범위를 기준으로 데이터를 그룹화하고 평균값을 계산하는 방법을 단계별로 살펴보겠습니다.1. 샘플 컬렉션 생성하기먼저 insertOne() 메서드를 사용해 테스트용 컬렉션에 문서를 생성합니다. 각 문서는 순위(Rank)와 마감일(DueDate) 필드를 가지고 있습니다.> db.demo133.insertOne({Ra
MongoDB에서 NAND 조건 쿼리 구현하기MongoDB의 $not 연산자는 단순한 조건만 반전시킬 수 있으며, 복잡한 표현식 전체를 반전(invert)하지 못한다는 한계가 있습니다. 따라서 NAND와 같은 논리 연산을 구현하려면 $or 또는 $and 연산자를 $ne(not equal) 연산자와 함께 조합하여 사용해야 합니다.이번 글에서는 실제 예제를 통해 $or와 $ne를 활용해 NAND 조건을 조회하는 방법을 살펴보겠습니다.1. 샘플 컬렉션 생성 및 문서 삽입먼저 demo266이라는 컬렉션을 만들고 테스트용 문서들을 삽입합니다
내림차순으로 데이터를 정렬하려면 sort() 메서드에 -1을 지정하면 됩니다. 이 글에서는 컬렉션을 생성하고 문서를 삽입한 뒤, 내림차순 정렬을 통해 상위 레코드 한 개만 조회하는 방법을 단계별로 살펴보겠습니다.1. 컬렉션 생성 및 문서 삽입먼저 insertOne() 메서드를 사용해 demo267 컬렉션에 문서들을 차례로 추가합니다.> db.demo267.insertOne({id:100,Name:Chris}); { acknowledged : true, insertedId : ObjectId(5e4811951627c0
MongoDB에서 특정 값을 검색할 때는 $where 연산자를 사용하면 됩니다. 이 연산자는 JavaScript 함수를 실행하여 문서 단위로 조건을 평가할 수 있기 때문에, 필드 이름이 동적으로 정해져 있거나 숫자 형태의 키(예: 101, 1001)로 구성된 객체 내부의 값을 찾을 때 특히 유용합니다.1. 테스트 컬렉션 생성먼저 예제에 사용할 컬렉션을 만들고 문서를 삽입해 보겠습니다.> db.demo268.insertOne( ... { ... details : { ... 101 : John, ...
MongoDB에서 컬렉션의 모든 필드를 가져오지 않고 원하는 필드만 제외하거나 선택하고 싶다면 find() 메서드의 프로젝션(projection) 기능을 활용하면 됩니다. 제외하고 싶은 필드를 0으로 설정하면 해당 필드는 결과에서 제외됩니다.1. 샘플 컬렉션 생성먼저 문서를 포함하는 컬렉션을 생성해 보겠습니다.> db.demo269.insertOne({StudentId:101,StudentSubject:MySQL}); { acknowledged : true, insertedId : ObjectId(5e481caa
MongoDB에서 $or 연산자로 여러 값 선택하는 방법MongoDB에서는 $or 연산자를 사용하면 여러 조건 중 하나라도 만족하는 문서를 손쉽게 조회할 수 있습니다. 이번 글에서는 실제 예제를 통해 $or 연산자의 사용법을 단계별로 살펴보겠습니다.1. 컬렉션 생성 및 문서 삽입먼저 insertOne() 메서드를 사용해 컬렉션을 생성하고 문서들을 삽입합니다.> db.demo270.insertOne({ClientName:Chirs,Age:34}); { acknowledged : true, insertedId : Obj
MongoDB에서 문서의 숫자 값을 동적으로 증가시켜야 할 때가 있습니다. 이때 사용자 정의 변수(custom variable)를 선언하고 update() 메서드와 함께 $inc 연산자를 사용하면 원하는 만큼 값을 손쉽게 증가시킬 수 있습니다.1. 테스트용 컬렉션 생성먼저 예제에 사용할 컬렉션을 만들고 문서를 삽입해 보겠습니다.> db.demo271.insertOne({Marks:56}); { acknowledged : true, insertedId : ObjectId(5e4821211627c0c63e7dbabc)
MongoDB에서 여러 필드 조합의 중복 방지하기데이터베이스를 운영하다 보면 단일 필드가 아닌 여러 필드의 조합이 중복되지 않도록 관리해야 하는 경우가 자주 발생합니다. 예를 들어, 같은 이름의 사용자가 서로 다른 과목을 수강하는 것은 허용하되, 동일한 사용자가 같은 과목을 중복 등록하는 것은 막고 싶은 상황을 생각해볼 수 있습니다.MongoDB에서는 ensureIndex() 메서드(최신 버전에서는 createIndex())에 unique: true 옵션을 설정하여 이러한 요구사항을 손쉽게 구현할 수 있습니다.1. 복합 유니크 인덱
MongoDB에서 검색어와 문서의 일치 정도를 기준으로 순위(ranking) 또는 검색 횟수(search count)를 계산하려면 aggregate() 메서드를 활용하면 됩니다. 이 글에서는 배열 필드와 검색어 목록의 교집합 비율을 구해 순위 점수를 산출하고, 내림차순으로 정렬하는 방법을 단계별로 살펴봅니다.1. 컬렉션 생성 및 문서 삽입먼저 데모용 컬렉션을 만들고 문서를 삽입합니다. 각 문서는 이름(Name)과 과목 목록(Subjects) 배열을 가지고 있습니다.> db.demo120.insertOne( ... { .
MongoDB에서 집계 함수(aggregate)는 여러 단계의 파이프라인을 거쳐 데이터를 그룹화하거나 요약할 때 매우 유용합니다. 이번 글에서는 실제 예제를 통해 컬렉션 생성부터 집계 쿼리 작성까지 전 과정을 살펴보겠습니다.1. 컬렉션 생성 및 문서 삽입먼저 insertOne() 메서드를 사용해 문서가 포함된 컬렉션을 생성합니다. 아래 예제에서는 과목별 점수 정보를 배열 형태로 담은 문서 하나를 삽입합니다.> db.demo121.insertOne( ... { ... Id : 101, ... De
MongoDB에서 배열 필드에 포함된 고유한(distinct) 값을 추출하고 싶다면, $addToSet 연산자를 활용한 집계(aggregation) 쿼리를 사용하는 것이 가장 효과적입니다. 이 글에서는 실제 예제를 통해 그 방법을 단계별로 살펴보겠습니다.1. 샘플 컬렉션 생성먼저 데모용 컬렉션을 만들고 문서를 삽입해 보겠습니다. 아래 예제에서는 각 문서가 숫자 배열을 담고 있는 ListOfValues 필드를 가지도록 구성했습니다.> db.demo122.insertOne({ListOfValues:[100,10]});{
MongoDB에서 이미 생성된 일반 컬렉션을 capped 컬렉션으로 변환하려면 convertToCapped 명령을 사용하면 됩니다. capped 컬렉션은 지정한 크기 제한에 따라 오래된 문서가 자동으로 삭제되는 순환 구조의 컬렉션으로, 로그 저장 등에 유용하게 활용됩니다.1. 테스트용 컬렉션 생성먼저 문서를 포함하는 일반 컬렉션을 만들어 보겠습니다.> db.demo260.insertOne({Name:Chris}); { acknowledged : true, insertedId : ObjectId(5e47b1181627
MongoDB 셸 스크립트에서 계산된 값을 콘솔에 퍼센트(%) 형식으로 출력하려면, 먼저 변수를 선언한 뒤 print() 메서드를 사용하면 됩니다.1. 변수 생성하기가장 먼저 출력할 숫자 값을 담을 변수를 만듭니다.> var amount = 10.58945;2. print() 메서드로 퍼센트 형식 출력하기이제 toFixed() 메서드로 소수점 자릿수를 조정하고, 문자열 연결로 % 기호를 붙여 콘솔에 출력합니다.> var amount = 10.58945;> print(amount.toFixed(2) + %);3. 실