MongoDB에서 고유한 값만 조회하는 방법MongoDB에서 컬렉션에 저장된 필드 값들 중 중복을 제거하고 고유한(distinct) 값만 반환하고 싶다면, distinct() 메서드를 사용하면 됩니다. 이 메서드는 지정한 필드의 모든 값을 스캔한 뒤, 중복된 값을 하나로 합쳐 배열 형태로 결과를 돌려줍니다.distinct() 기본 문법db.컬렉션이름.distinct(필드이름);필요에 따라 두 번째 인자로 쿼리 조건(query filter)을 전달하여, 특정 조건을 만족하는 문서들에서만 고유한 값을 추출할 수도 있습니다.예제용 컬렉션
MongoDB에서 배열에 특정 필드 값이 포함되지 않은 문서 찾기MongoDB에서 배열(array) 안에 담긴 문서 중 특정 필드 값을 가진 항목이 하나도 없는 문서를 조회하고 싶다면 $nin 연산자를 사용하면 됩니다. 이 글에서는 실제 예제를 통해 컬렉션 생성부터 조건 조회까지 단계별로 살펴보겠습니다.1단계: 컬렉션 생성 및 문서 삽입먼저 insertOne() 메서드를 사용해 학생 성적 데이터를 담은 두 개의 문서를 삽입합니다.> db.documentWithAParticularFieldValueDemo.insertOne(
MongoDB에서 배열 요소를 제거하는 방법: $pull 연산자MongoDB에서 $addToSet은 배열에 중복 없이 값을 추가하는 연산자입니다. 그렇다면 그 반대인 $removeFromSet처럼 배열에서 특정 값을 제거하려면 어떻게 해야 할까요? 정답은 바로 $pull 연산자를 사용하는 것입니다.$pull 연산자는 지정한 조건과 일치하는 모든 값을 배열에서 제거해 줍니다. 이번 글에서는 실제 예제를 통해 $pull의 사용법을 단계별로 살펴보겠습니다.1. 테스트 컬렉션 생성먼저 문서가 포함된 컬렉션을 생성합니다. 아래 쿼리는 학생
MongoDB에서 모든 문서의 키 값 합산하기MongoDB 컬렉션에 있는 모든 문서에서 특정 키의 값을 합산하려면 aggregate() 메서드를 사용하면 됩니다. 집계 파이프라인의 $group 단계와 $sum 연산자를 조합하면 손쉽게 전체 합계를 구할 수 있습니다.개념을 이해하기 위해 먼저 샘플 문서가 포함된 컬렉션을 생성해 보겠습니다.1. 컬렉션 생성 및 문서 삽입다음 쿼리로 컬렉션을 만들고 문서를 하나씩 삽입합니다.> db.sumOfValueDemo.insertOne({Name:Larry,Amount:14.50}); {
MongoDB 셸에서 컬렉션의 모든 레코드(문서)를 한 번에 삭제하려면 remove() 메서드를 사용하면 됩니다. 기본적인 문법은 다음과 같습니다.db.yourCollectionName.remove({});여기서 빈 객체 {}를 조건으로 전달하면 해당 컬렉션에 있는 모든 문서가 삭제됩니다.예제용 컬렉션 생성하기문법을 실제로 이해하기 위해, 먼저 문서가 포함된 컬렉션을 만들어 보겠습니다. 아래는 컬렉션을 생성하고 문서를 삽입하는 쿼리입니다.> db.deleteAllRecordsDemo.insertOne({StudentName:J
MongoDB 셸(mongo shell)에서 현재 데이터베이스에 등록된 모든 사용자를 확인하려면 getUsers() 메서드 또는 show users 명령어를 사용하면 됩니다. 두 가지 방법 모두 동일한 결과를 반환하지만, 상황에 따라 편의성이 조금씩 다릅니다.방법 1 — getUsers() 메서드 사용getUsers()
MongoDB에서 특정 컬렉션에 생성된 인덱스를 확인하려면 getIndexes() 메서드를 사용하면 됩니다. 이 메서드는 해당 컬렉션에 존재하는 모든 인덱스의 정보를 배열 형태로 반환해 줍니다.getIndexes() 기본 문법db.yourCollectionName.getIndexes();예제: 컬렉션 생성 및 데이터 삽입개념을 이해하기 위해 먼저 컬렉션을 만들고 문서를 삽입해 보겠습니다. 아래 쿼리는 indexDemo 컬렉션에 학생 정보를 저장하는 예제입니다.> db.indexDemo.insertOne({StudentName:
MongoDB 서버의 상태와 성능을 모니터링할 때 현재 연결 수를 확인하는 것은 매우 중요합니다. MongoDB는 db.serverStatus() 명령을 통해 연결 정보를 손쉽게 조회할 수 있도록 지원합니다.연결 수를 확인하는 두 가지 방법방법 1: 변수에 저장한 후 조회하기먼저 db.serverStatus()의 결과를 변수에 담은 뒤, 해당 변수에서 connections 필드를 호출하는 방식입니다.> var checkCurrentNumberOfConnections = db.serverStatus() > checkCurr
MongoDB에서 합계를 집계하여 총 개수(total count) 또는 총합(total sum)을 구하려면 애그리게이션 파이프라인의 $sum 연산자를 사용하면 됩니다. $sum은 그룹화된 문서들의 값을 더하는 데 사용되며, $sum: 1처럼 상수를 지정하면 문서의 개수를 세는 용도로도 활용할 수 있습니다.개념을 이해하기 위해 먼저 컬렉션을 생성하고 문서를 삽입해 보겠습니다.1. 샘플 컬렉션 생성> db.aggregateSumDemo.insertOne({CustomerName:Larry,Amount:140}); { acknowl
MongoDB 컬렉션 이름 변경하기MongoDB에서 기존 컬렉션의 이름을 변경하려면 renameCollection() 메서드를 사용하면 됩니다. 이 메서드는 현재 데이터베이스 내에서 컬렉션의 이름을 손쉽게 바꿔주며, 실행 결과로 성공 여부를 나타내는 응답을 반환합니다.기본 문법컬렉션 이름을 변경하는 기본 문법은 다음과 같습니다.db.기존컬렉션이름.renameCollection(새로운컬렉션이름);실습 예제문법을 제대로 이해하기 위해, 먼저 sample 데이터베이스에 존재하는 모든 컬렉션 목록을 확인해 보겠습니다.> use sam
MongoDB에서 가장 큰(max) _id 값을 가진 요소를 가져오려면 find() 메서드와 함께 sort(), limit()을 조합하면 됩니다. 핵심 아이디어는 간단합니다. _id 기준으로 내림차순 정렬한 뒤, 첫 번째 문서 하나만 가져오는 것입니다.1. 테스트용 컬렉션 생성하기개념을 이해하기 위해 먼저 문서를 포함한 컬렉션을 생성해 보겠습니다. 아래 쿼리를 사용합니다.> db.getElementWithMaxIdDemo.insertOne({Name:John,Age:21}); { acknowledged : true,
MongoDB에서 컬렉션 복제하기MongoDB에서 컬렉션을 복제(clone)하려면 forEach() 메서드를 활용하면 됩니다. 이 메서드는 원본 컬렉션의 모든 문서를 순회하면서 각 문서를 새로운 컬렉션에 삽입하는 방식으로 동작합니다.먼저 예제로 사용할 문서가 포함된 컬렉션을 생성해 보겠습니다.1. 샘플 컬렉션 생성다음 쿼리를 사용하여 문서가 담긴 컬렉션을 생성할 수 있습니다.> db.studentInformation.insertOne({StudentName:Chris}); { acknowledged : true, i
MongoDB 셸(mongo shell)에서 JavaScript를 실행하면서 결과를 콘솔에 출력해야 하는 경우가 자주 있습니다. 이때 사용하는 대표적인 메서드가 바로 print()와 printjson()입니다. 각각의 용도와 사용 방법을 예제와 함께 살펴보겠습니다.1. print() – 문자열 출력하기콘솔에 단순한 문자열이나 텍스트를 출력할 때는 print() 메서드를 사용합니다. 기본 문법은 다음과 같습니다.print(yourString);실제로 콘솔에 인사말을 출력해 보겠습니다.> print(Welcome to MongoD
MongoDB에서는 $regex 연산자를 활용하면 대소문자를 구분하는 검색 조건을 손쉽게 설정할 수 있습니다. 특히 정규식에 i 옵션(플래그)을 추가하면 대소문자를 구분하지 않는(case-insensitive) 검색도 가능합니다.기본 문법가장 기본적인 정규식 검색 문법은 다음과 같습니다.db.yourCollectionName.find({yourFieldName : { $regex:^yourValue$}});슬래시(/) 표기법을 사용한 또 다른 방식도 있습니다. 마지막의 i 플래그가 대소문자를 무시하도록 만들어 줍니다.db.yourC
MongoDB 다중 업데이트 오류란?MongoDB에서 조건 없이 컬렉션의 모든 문서를 한 번에 업데이트하려고 할 때 multi update is only allowed with $ operators(다중 업데이트는 $ 연산자에서만 작동합니다)라는 오류가 발생하는 경우가 있습니다. 이 오류는 여러 문서를 수정할 때 업데이트 연산자($set 등)를 사용하지 않았기 때문에 발생합니다.이 문제는 $set 연산자를 사용하면 간단히 해결할 수 있습니다. 기본 문법은 다음과 같습니다.db.yourCollectionName.update({ },
MongoDB count()가 느린 이유와 해결 방법MongoDB에서 count() 메서드의 실행 속도가 느린 가장 큰 원인은, 검색 조건에 해당하는 필드에 인덱스가 없어 컬렉션 전체를 처음부터 끝까지 스캔(collection scan)하기 때문입니다. 이 문제는 ensureIndex()를 사용해 조건 필드에 인덱스를 미리 생성해 두면 크게 개선할 수 있습니다.실제 동작을 이해하기 위해 예제용 컬렉션을 만들고 문서를 삽입해 보겠습니다.1. 테스트 컬렉션 생성 및 문서 삽입> db.countPerformanceDemo.inser
MongoDB에서 collection.find()를 실행하면 기본적으로 문서에 존재하는 모든 필드가 반환됩니다. 하지만 프로젝션(projection)을 활용하면 원하는 필드만 선택적으로 조회하거나, 특정 필드를 제외한 결과를 얻을 수 있습니다. 필드 프로젝션 기본 문법 Case 1 — 특정 필드만 포함하기 find()의 두 번째 인자에 필드 이름을 지정하고 값을 1로 설정하면 해당 필드만 반환됩니다. db.yourCollectionName.find({}, { yourFieldName: 1 }).pretty(); 필드 값을 1로 설
MongoDB에서 특정 필드가 null로 명시적으로 설정된 경우와 아예 존재하지 않는 경우는 서로 다른 쿼리 문법으로 구분해야 합니다. 이 두 가지 상황을 각각 살펴보겠습니다.Case 1: 필드가 존재하면서 null로 설정된 경우필드가 문서에 존재하고 값이 null인 레코드를 찾으려면 아래와 같은 문법을 사용합니다.db.yourCollectionName.count({yourFieldName: null});Case 2: 필드 자체가 존재하지 않는 경우필드가 문서에 아예 없고 값도 설정되지 않은 레코드를 찾으려면 $exists 연산자를
MongoDB에서 배열의 특정 인덱스에 있는 요소를 제거하려면 $unset과 $pull이라는 두 가지 연산자를 순서대로 사용하는 두 단계 과정을 거쳐야 합니다.1단계: $unset으로 해당 인덱스의 값을 null로 변경먼저 아래와 같은 구문을 사용하여 제거하고자 하는 인덱스 위치의 값을 null로 만듭니다.db.yourCollectionName.update({}, {$unset : {yourArrayFieldName.yourIndexValue : 1 }});위 구문을 실행하면 지정한 인덱스(yourIndexValue) 자리에 nul
MongoDB에서 두 개의 필드 값을 서로 비교하여 조건에 맞는 문서를 조회하려면 $where 연산자와 JavaScript 함수를 함께 사용해야 합니다. 일반적인 비교 연산자($gt, $lt 등)는 특정 필드와 고정된 값만 비교할 수 있지만, 서로 다른 두 필드 간의 비교는 $where 절 안에서 자바스크립트 표현식으로 처리해야 합니다.기본 문법두 필드를 비교하는 쿼리 조건은 아래와 같은 형태로 작성합니다.db.yourCollectionName.find( { $where: function() { return this.yourFirs