온라인 강의 자료모음 기업교육

mongoDB 데이터 입력/수정/검색/삭제 (CRUD)

이해하기 쉽고, 장황하지 않은 자료를 기반으로 강의를 진행합니다.
AI · 풀스택 · 데이터 로드맵 Dave Lee 한 강사가 설계부터 강의까지 모두
사이트 바로가기

4. mongoDB 데이터 입력/수정/검색/삭제 (CRUD)

4.1. Document 입력 - insertOne, insertMany

  • insertOne : 한개의 document 생성
  • insertMany : list of document 생성

Document 입력 문법

No description has been provided for this image

SQL INSERT 문법과 비교

No description has been provided for this image

MongoDB를 체계적으로 정리한 온라인 강의입니다

NoSQL DB (몽고DB) 기본과 활용

MongoDB 기본, 비정형 데이터 처리 기술

  • insertOne 예제
db.articles.insertOne(
     { subject: "coffee", author: "xyz", views: 50 }
)
  • insertMany 예제
db.articles.insertMany(
   [
     { subject: "coffee", author: "xyz", views: 50 },
     { subject: "Coffee Shopping", author: "efg", views: 5 },
     { subject: "Baking a cake", author: "abc", views: 90  },
     { subject: "baking", author: "xyz", views: 100 },
     { subject: "Café Con Leche", author: "abc", views: 200 },
     { subject: "Сырники", author: "jkl", views: 80 },
     { subject: "coffee and cream", author: "efg", views: 10 },
     { subject: "Cafe con Leche", author: "xyz", views: 10 },
     { subject: "coffees", author: "xyz", views: 10 },
     { subject: "coffee1", author: "xyz", views: 10 }
   ]
)
실습
1. employees Collection 생성 {capped:true, size:100000} Capped Collection, size는 100000 으로 생성
2. 다음 Document 데이터 넣기
- user_id 가 bcd001, age 가 45, status 가 A 인 Document
- user_id 가 bcd002, age 가 25, status 가 B 인 Document
- user_id 가 bcd003, age 가 50, status 가 A 인 Document
- user_id 가 bcd004, age 가 35, status 가 A 인 Document
- user_id 가 abc001, age 가 28, status 가 B 인 Document

데이터 분석/과학 전문가가 되기 위한 체계적인 로드맵입니다

가장 빠른 데이터 분석/과학 풀로드맵 (2025)

데이터 수집 → 분석 → 머신러닝/딥러닝 전과정

4.2. Document 읽기(검색) - findOne, find

  • findOne : 매칭되는 한개의 document 검색
  • find : 매칭되는 list of document 검색

Document 읽기(검색) 문법

No description has been provided for this image

  • find()/findOne 명령과 - SQL 문 비교
db.people.find() - SELECT * FROM people
db.people.find({ }, { user_id: 1, status: 1 }) - SELECT _id, user_id, status FROM people
db.people.find({ },{ user_id: 1, status: 1, _id: 0 }) - SELECT user_id, status FROM people
db.people.find({ status: "A" }) - SELECT * FROM people WHERE status = "A"
db.people.find({ status: "A", age: 50 }) - SELECT * FROM people WHERE status = "A" AND age = 50
db.people.find({ $or: [ { status: "A" } , { age: 50 } ] }) - SELECT * FROM people WHERE status = "A" OR age = 50

풀스택 개발자가 되기 위한 체계적인 로드맵입니다

가장 빠른 풀스택 개발 로드맵 (2025)

파이썬 → Flask → FastAPI → Flutter 전과정

실습
1. employees Collection 에서 user_id 가 bcd002 인 Document의 user_id, age, status, _id 출력
2. employees Collection 에서 user_id 가 bcd003 인 Document의 user_id, age, status 출력
3. employees Collection 에서 user_id 가 bcd004 이거나, age가 28인 Document 의 모든 필드 출력

비교 문법

$eq     =    Matches values that are equal to a specified value.
$gt     >    Matches values that are greater than a specified value.
$gte    >=   Matches values that are greater than or equal to a specified value.
$in          Matches any of the values specified in an array.
$lt     <    Matches values that are less than a specified value.
$lte    <=   Matches values that are less than or equal to a specified value.
$ne     !=   Matches all values that are not equal to a specified value.
$nin         Matches none of the values specified in an array.

비교 문법 코드 예제

db.people.find({ age: { $gt: 25 } }) - SELECT * FROM people WHERE age > 25
db.people.find({ age: { $lt: 25 } }) - SELECT * FROM people WHERE age < 25
db.people.find({ age: { $gt: 25, $lte: 50 } }) - SELECT * FROM people WHERE age > 25 AND age <= 50
db.people.find( { user_id: /bc/ } )
db.people.find( { user_id: { $regex: /bc/ } } )
                                                  - SELECT * FROM people WHERE user_id like "%bc%"
db.people.find( { user_id: /^bc/ } )
db.people.find( { user_id: { $regex: /^bc/ } } )
                                                  - SELECT * FROM people WHERE user_id like "bc%"
db.people.find( { status: "A" } ).sort( { user_id: 1 } ) - SELECT * FROM people WHERE status = "A" ORDER BY user_id ASC 
db.people.find( { status: "A" } ).sort( { user_id: -1 } ) - SELECT * FROM people WHERE status = "A" ORDER BY user_id DESC
db.people.countDocuments({})
                                                  - SELECT COUNT(*) FROM people
db.people.countDocuments( { user_id: { $exists: true } } )
                                                  - SELECT COUNT(user_id) FROM people
db.people.countDocuments( { age: { $gt: 30 } } )
                                                  - SELECT COUNT(*) FROM people WHERE age > 30
db.people.distinct( "status" ) - SELECT DISTINCT(status) FROM people
db.people.findOne()
db.people.find().limit(1)
                                                  - SELECT * FROM people LIMIT 1
실습
1. 다음 Document 데이터 넣기
- age 가 20 보다 큰 Document 의 user_id 만 출력하기
- age 가 50 이고 status 가 A 인 Document 의 user_id 만 출력하기
- age 가 60 보다 작은 Document 의 user_id 와 age 출력하기
- user_id 종류 출력하기
- user_id 가 bcd 로 시작하는 전체 Document 출력하기

Document 수정 - updateOne, updateMany

  • updateOne - 매칭되는 한개의 document 업데이트
  • updateMany - 매칭되는 list of document 업데이트

MongoDB를 체계적으로 정리한 온라인 강의입니다

NoSQL DB (몽고DB) 기본과 활용

MongoDB 기본, 비정형 데이터 처리 기술

4.3. Document 수정 문법

No description has been provided for this image

Document 수정 코드 예제

- db.people.updateMany( { age: { $gt: 25 } }, { $set: { status: "C" } } )
- SQL 변환하면, 
  - UPDATE people SET status = "C" WHERE age > 25
- 한 Document만 수정하려면 updateOne을 사용함
- db.people.updateOne( { age: { $gt: 25 } }, { $set: { status: "C" } } )
- db.people.updateMany( { status: "A" } , { $inc: { age: 3 } } )
- SQL 변환하면,
  - UPDATE people SET age = age + 3 WHERE status = "A"
실습
1. 다음 Document 데이터 수정하기
- age 가 40 보다 큰 Document 의 status 를 B 로 변환하기

데이터 분석/과학 전문가가 되기 위한 체계적인 로드맵입니다

가장 빠른 데이터 분석/과학 풀로드맵 (2025)

데이터 수집 → 분석 → 머신러닝/딥러닝 전과정

4.4. Document 삭제 - removeOne, removeMany

  • removeOne - 매칭되는 한개의 document 삭제
  • removeMany - 매칭되는 list of document 삭제

Document 삭제 문법

No description has been provided for this image

  • db.people.deleteMany( { status: "D" } )
  • SQL로 변환하면,
    • DELETE FROM people WHERE status = "D"
  • db.people.deleteMany({})
  • SQL로 변환하면,
    • DELETE FROM people
실습
1. 다음 Document 데이터 삭제하기
- age 가 30 보다 작은 Document 삭제하기

풀스택 개발자가 되기 위한 체계적인 로드맵입니다

가장 빠른 풀스택 개발 로드맵 (2025)

파이썬 → Flask → FastAPI → Flutter 전과정

참고: mongo shell

  • 로컬에서 서버가 돌아갈 경우,
    • mongo
  • 원격 서버에 접속할 경우
    • mongo --host 'host_address' --port 'port'
    • 예) mongo --host 192.10.21.3 --port 27017