반응형
MongoDB에서의 CRUD(Create, Read, Update, Delete) 작업은 데이터베이스에서 데이터를 삽입하고, 조회하고, 수정하고, 삭제하는 기본적인 작업을 말합니다.
1. Document 입력 - insertOne, insertMany
- insertOne: 한 개의 document(문서)를 생성합니다.
- insertMany: 여러 개의 document를 한 번에 생성합니다.
// 하나의 문서를 추가 (insertOne)
db.test_2.insertOne(
{ title: "MongoDB Guide", author: "Jane Doe", views: 100 }
)
// 여러 개의 문서를 추가 (insertMany)
db.test_2.insertMany([
{ title: "Python Tutorial", author: "John Smith", views: 150 },
{ title: "JavaScript Basics", author: "Sara Lee", views: 200 },
{ title: "Node.js in Action", author: "Mike Brown", views: 250 }
])
2. Document 읽기(검색) - findOne, find
- findOne: 조건에 맞는 한 개의 document를 검색합니다.
- find: 조건에 맞는 여러 개의 document를 검색합니다.
// 하나의 문서를 검색 (findOne)
db.test_2.findOne({ title: "MongoDB Guide" })
// 조건에 맞는 모든 문서를 검색 (find)
db.test_2.find({ views: { $gte: 150 } })
// 특정 필드만 출력 (projection)
db.test_2.find({ views: { $gte: 150 } }, { title: 1, author: 1, _id: 0 })
3. Document 수정 - updateOne, updateMany
- updateOne: 조건에 맞는 한 개의 document를 업데이트합니다.
- updateMany: 조건에 맞는 여러 개의 document를 업데이트합니다.
// 한 개의 문서를 업데이트 (updateOne)
db.test_2.updateOne({ title: "MongoDB Guide" }, { $set: { views: 120 } })
// 조건에 맞는 여러 문서를 업데이트 (updateMany)
db.test_2.updateMany({ author: "John Smith" }, { $set: { author: "Jonathan Smith" } })
4. Document 삭제 - deleteOne, deleteMany
- deleteOne: 조건에 맞는 한 개의 document를 삭제합니다.
- deleteMany: 조건에 맞는 여러 개의 document를 삭제합니다.
// 한 개의 문서를 삭제 (deleteOne)
db.test_2.deleteOne({ title: "Node.js in Action" })
// 조건에 맞는 여러 문서를 삭제 (deleteMany)
db.test_2.deleteMany({ views: { $lt: 150 } })
MongoDB의 다양한 문법
정규 표현식 ($regex)
db.test_2.find({ name: { $regex: /^b/ } }) // name이 'b'로 시작하는 문서들을 조회하는 방법
db.test_2.find({ name: { $regex: /apple$/ } }) // name이 'apple'로 끝나는 문서들을 조회하는 방법
정렬 (.sort())
db.test_2.find().sort({ stock: 1 }) // stock 필드를 기준으로 오름차순 정렬하는 방법
db.test_2.find().sort({ name: -1 }) // name 필드를 기준으로 내림차순 정렬하는 방법
문서 개수 세기 (.countDocuments(), .estimatedDocumentCount())
db.test_2.countDocuments({ category: "fruit" }) // 특정 조건(category가 "fruit")을 만족하는 문서의 개수를 세는 방법
db.test_2.estimatedDocumentCount() // 컬렉션 내 전체 문서의 개수를 추정하는 방법
필드 존재 여부 확인 ($exists)
db.test_2.find({ price: { $exists: true } }) // 특정 필드(price)가 존재하는 문서들을 조회하는 방법
db.test_2.find({ discount: { $exists: false } }) // 특정 필드(discount)가 존재하지 않는 문서들을 조회하는 방법
중복 제거 (.distinct())
db.test_2.distinct("category") // 특정 필드(category)의 중복을 제거하고 고유한 값을 조회하는 방법
리미티드와 스킵 (.limit(), .skip())
db.test_2.find().limit(5) // 조회 결과에서 처음 5개의 문서만 가져오는 방법
db.test_2.find().skip(2) // 조회 결과에서 처음 2개의 문서를 건너뛰고 가져오는 방법
집계 (.aggregate())
db.test_2.aggregate([
{ $match: { category: "fruit" } }, // 특정 조건(category가 "fruit")을 만족하는 문서를 필터링하는 방법
{ $group: { _id: "$category", totalStock: { $sum: "$stock" } } }
]) // 필터링된 문서들을 그룹화하여 category별 총 stock 합계를 계산하는 방법
'Development > NoSQL' 카테고리의 다른 글
MongoDB와 관계형 데이터베이스, 데이터 타입과 설계 방식의 차이 (1) | 2024.09.06 |
---|---|
요구사항 정의서 작성 (1) | 2024.09.04 |
MongoDB 기본 명령어와 비교,논리 연산자 (0) | 2024.08.26 |
MongoDB 기초 가이드: 데이터 삽입, 조회, 삭제 및 정규 표현식 활용 (2) | 2024.08.02 |
SQL과 NoSQL은 뭐가 다를까? 차이점은? (0) | 2024.08.02 |