MongoDB에서 대소문자를 구분하지 않는 검색이 필요한 이유MongoDB에서 문자열을 검색할 때 기본적으로는 대소문자가 구분됩니다. 예를 들어 mongodb로 검색하면 MongoDB나 MONGODB 같은 문서는 조회되지 않습니다. 이런 경우 $regex 연산자에 대소문자 무시 옵션(i)을 함께 사용하면 해결할 수 있습니다.먼저 문서가 포함된 컬렉션을 생성해 보겠습니다.> db.demo759.insertOne({SubjectName:MySQL}); { acknowledged : true, insertedId : Ob
MongoDB에서 하나의 쿼리만으로 여러 문서를 업데이트하려면 bulkWrite() 메서드를 사용하면 됩니다. 이 메서드는 삽입, 수정, 삭제 등 다양한 쓰기 작업을 하나의 요청으로 일괄 처리할 수 있어 성능 면에서도 매우 효율적입니다.1. 테스트용 컬렉션 생성하기먼저 예제 문서들을 담은 컬렉션을 생성해 보겠습니다.> db.demo760.insertOne({id:1,details:{Value1:100,Value2:50}}); { acknowledged : true, insertedId : ObjectId(5eb0
MongoDB에서 배열 안에 저장된 데이터 중 특정 값만 가져오고 싶을 때가 있습니다. 이럴 때는 aggregate() 메서드와 함께 $project 연산자를 사용하면 원하는 값만 깔끔하게 추출할 수 있습니다.1. 테스트용 컬렉션 생성하기먼저 예제에 사용할 컬렉션을 만들고 문서를 삽입해 보겠습니다.> db.demo761.insertOne( ... { ... details: [ ... { ... student: { ... FullName:
MongoDB 집계와 프로젝션이란?MongoDB에서 원하는 필드만 선택적으로 반환받으려면 aggregate() 메서드와 함께 $project 연산자를 사용하면 됩니다. 집계 파이프라인에서 $project 단계는 요청된 필드만 담고 있는 문서를 다음 단계로 전달하는 역할을 합니다.샘플 컬렉션 생성하기먼저 실습에 사용할 문서가 포함된 컬렉션을 생성해 보겠습니다.> db.demo762.insertOne({... "_id" : {... "userId" : 101,...
MongoDB에서 배열 형태로 저장된 객체(중첩 문서) 중 특정 조건에 맞는 문서만 조회하고 싶다면 find() 메서드와 $elemMatch 연산자를 함께 사용하면 됩니다. 이 글에서는 예제 컬렉션을 만들고, 단계별로 원하는 중첩 문서만 추출하는 방법을 살펴보겠습니다.1. 샘플 컬렉션 생성하기먼저 학생 정보를 배열로 가지는 문서를 삽입하여 컬렉션을 생성합니다. 아래 예제에서 studentInformation 필드는 여러 개의 객체(학생 정보)를 담고 있는 배열입니다.> db.demo763.insertOne( ... {
MongoDB에서 null이 아닌 값 확인하는 방법 MongoDB에서 특정 필드가 null이 아닌 문서만 조회하고 싶다면 $ne(not equal) 연산자를 사용하면 됩니다. 이 글에서는 예제 컬렉션을 직접 만들어보고, $ne : null 조건을 적용해 null이 아닌 문서만 필터링하는 과정을 단계별로 살펴보겠습니다. 1. 예제 컬렉션 생성 및 문서 삽입 먼저 demo764라는 이름의 컬렉션을 생성하고 세 개의 문서를 삽입합니다. 두 번째 문서에는 LoginPassword 값이 명시적으로 null로 저장되어 있다는 점에 주목하세요
여러 개의 집계 결과를 한 번에 얻으려면 MongoDB의 $group 연산자와 $facet 단계를 함께 사용하면 됩니다. 이 글에서는 샘플 데이터를 준비한 뒤, 이름별 점수 합계와 카테고리별 점수 합계를 단 한 번의 쿼리로 동시에 계산하는 방법을 살펴보겠습니다. 샘플 데이터 생성 먼저 demo765 컬렉션을 만들고 세 개의 문서를 차례로 삽입합니다. > db.demo765.insertOne({ ... Name: John, ... Category: ComputerScience, ... SubjectName: M
MongoDB는 널리 사용되는 문서 지향(document-oriented) 데이터베이스로, NoSQL 데이터베이스의 대표적인 형태입니다. 파이썬은 pymongo 모듈을 통해 MongoDB에 연결하고, 데이터를 생성·조작할 수 있습니다. 이 글에서는 파이썬으로 MongoDB를 다루는 기본적인 방법을 단계별로 살펴보겠습니다.단, 파이썬이 MongoDB에 연결하려면 시스템에 MongoDB가 먼저 설치되어 있고 실행 중이어야 합니다. 아직 MongoDB를 설치하지 않았다면 먼저 MongoDB 설치 및 설정을 완료한 후 진행하세요.pymon
mongodb.connect() 메서드란?mongodb.connect()는 Node.js 애플리케이션과 MongoDB 서버를 연결할 때 사용하는 메서드입니다. 이 메서드는 MongoDB 모듈에서 제공되는 비동기(asynchronous) 방식으로 동작하며, 데이터베이스 서버에 접속한 후 콜백 함수를 통해 결과를 처리합니다.문법(Syntax)mongodb.connect(path[, callback])매개변수(Parameters)path – 실제로 MongoDB 서버가 실행 중인 서버 경로와 포트 번호를 의미합니다. 예를 들어 mongo
이 글에서는 이름, 이메일, 비밀번호, 전화번호 등의 입력 항목을 포함한 간단한 사용자 회원가입 폼을 만들어 보겠습니다. 제출 버튼을 클릭하면 입력된 모든 사용자 정보가 MongoDB 데이터베이스에 저장되는 구조입니다.사전 준비: 필수 패키지 설치회원가입 폼을 만들기 전에 아래의 의존성 패키지들이 시스템에 정상적으로 설치되어 있어야 합니다.Express: 미들웨어를 설정하여 HTTP 요청에 응답하는 역할을 담당하는 웹 프레임워크입니다. 다음 명령어로 설치할 수 있습니다.npm install express --savebody-pars
배열 필드에 값을 추가하려면 update() 메서드와 함께 $push 연산자를 사용하고, 이때 multi 옵션을 TRUE로 설정해야 합니다. 먼저 예제용 문서가 담긴 컬렉션을 생성해 보겠습니다.1단계: 컬렉션 생성 및 문서 삽입insertOne() 메서드로 세 개의 문서를 순차적으로 삽입합니다.> db.demo747.insertOne({"CountryName":["US","IND"]});{ "acknowledged" : tru
MongoDB 문서의 최대 크기 제한MongoDB에서 문서(Document)란 컬렉션(Collection)에 저장되는 기본 데이터 단위, 즉 하나의 레코드를 의미합니다. 문서는 중괄호({})로 감싸진 BSON 형식으로 표현되며, 하나의 문서는 최대 16MB까지만 저장할 수 있습니다.이러한 16MB 제한은 단일 문서가 지나치게 커져 쿼리 성능 저하나 메모리 문제를 일으키는 것을 방지하기 위한 설계입니다. 만약 이미지, 동영상처럼 16MB를 초과하는 대용량 파일을 저장해야 한다면, MongoDB가 제공하는 GridFS를 활용해 파일을
개요MongoDB에서 수식(연산식)을 활용해 컬렉션 내 문서의 각 필드를 한 번에 업데이트하려면 update() 메서드와 $mul 연산자, 그리고 배열 전체 위치(all positional) 연산자인 $[]를 함께 사용하면 됩니다. 먼저 예제로 사용할 컬렉션을 생성해 보겠습니다.1. 샘플 데이터 삽입> db.demo749.insertOne({details:[{id:1,a:10},{id:2,a:5},{id:3,a:20}]}); { acknowledged : true, insertedId : ObjectId(5eae6f
MongoDB에서 고유한(distinct) 요소별로 최대값을 구하려면 aggregate() 메서드 안에서 $sort와 $group 스테이지를 함께 사용하면 됩니다. 핵심 아이디어는 값 기준으로 내림차순 정렬한 뒤 그룹화하여 각 그룹의 첫 번째 문서(즉, 가장 큰 값을 가진 문서)를 선택하는 것입니다.1. 샘플 컬렉션 생성하기먼저 문서를 담은 컬렉션을 생성합니다.> db.demo750.insertOne({id:101,value:50}); { acknowledged : true, insertedId : ObjectI
MongoDB에서 배열 필드 내부의 요소 중 특정 조건에 맞는 값만 추출하려면 $filter 연산자를 사용하면 됩니다. 이 글에서는 실제 예제를 통해 테스트용 문서를 생성하고, $filter를 활용해 원하는 데이터만 걸러내는 과정을 단계별로 살펴보겠습니다. 1. 샘플 컬렉션 생성 먼저 insertOne() 메서드로 테스트용 문서를 삽입합니다. 이 문서에는 세 사람의 정보가 담긴 details 배열이 포함되어 있습니다. > db.demo751.insertOne( ... { ... _id: 101, ...
MongoDB에서 생년월일을 나이로 변환하는 방법데이터베이스를 다루다 보면 저장된 생년월일(DateOfBirth) 데이터를 바탕으로 현재 나이를 계산해야 하는 경우가 매우 흔합니다. MongoDB의 애그리게이션(Aggregation) 파이프라인을 활용하면 이러한 변환을 손쉽게 처리할 수 있습니다. 이번 글에서는 실제 예제를 통해 생년월일 필드를 나이 값으로 변환하는 전체 과정을 단계별로 살펴보겠습니다.1단계: 컬렉션 생성 및 문서 삽입먼저 demo754라는 이름의 컬렉션을 생성하고, 생년월일 정보를 담은 문서 세 개를 삽입합니다.&
MongoDB에서 정수와 소수 값이 모두 포함된 필드 정렬하기MongoDB에서 정수(int)와 소수(double)가 뒤섞여 저장된 숫자 필드를 정렬해야 할 때가 있습니다. 다행히 BSON 기준으로 숫자 타입은 값 자체를 비교하기 때문에, 별도의 타입 변환 없이 sort() 메서드만으로 자연스럽게 정렬할 수 있습니다. 이번 글에서는 실제 예제를 통해 단계별로 살펴보겠습니다.1단계: 샘플 컬렉션 생성먼저 정수와 소수 값을 함께 가진 문서들로 컬렉션을 생성합니다.> db.demo755.insertOne({Value:10}); {
MongoDB에서 배열 필드 안에 중복된 값이 있는지 확인하려면 aggregate() 메서드를 활용하는 것이 가장 효과적입니다. 이 글에서는 실제 예제를 통해 배열의 중복 요소를 찾아내는 과정을 단계별로 살펴보겠습니다.1. 샘플 데이터로 컬렉션 생성하기먼저 테스트에 사용할 문서들을 포함한 컬렉션을 생성합니다. 두 번째 문서에는 의도적으로 중복된 과목명을 넣었습니다.> db.demo756.insertOne({SubjectName:[MySQL,MongoDB,Java]}); { acknowledged : true, i
MongoDB 배열 데이터를 개별 레코드로 분리하기MongoDB를 사용하다 보면 하나의 문서(document)에 배열 형태로 저장된 값을 각각 독립적인 문서로 분리해야 하는 경우가 자주 발생합니다. 예를 들어, 한 사용자 문서에 여러 이름이 배열로 저장되어 있을 때, 이를 이름별 개별 레코드로 변환하고 싶다면 애그리게이션 파이프라인의 $unwind와 $out 연산자를 활용하면 됩니다.핵심 단계는 다음과 같습니다.aggregate(): 애그리게이션 파이프라인을 실행합니다.$unwind: 배열 필드를 요소별로 분해하여 각 요소마다 하나
MongoDB에서 날짜나 시간 데이터를 다룰 때 가장 많이 사용되는 작업 중 하나가 타임스탬프(timestamp)를 기준으로 문서를 정렬하는 것입니다. 최신 데이터부터 오래된 데이터 순으로 조회하려면 sort() 메서드에 -1(내림차순) 옵션을 지정하면 됩니다.1. 샘플 컬렉션 생성하기먼저 실습에 사용할 컬렉션을 만들고 타임스탬프 필드를 가진 문서들을 삽입해 보겠습니다. insertOne() 메서드와 ISODate()를 활용합니다.> db.demo737.insertOne({timestamp : new ISODate(2020-0