기본 CRUD 예제
시나리오는 직원의 데이터를 관리
insertOne
1개 document 를 삽입
현재 재직중인 직원
db.employees.insertOne({
name: "jeffrey",
age: 20,
dept: "backend",
joinDate: new ISODate("2021-05-24"),
salary: 100000,
bonus: null
})
insertMany
2개 이상의 document 를 삽입
퇴사자 및 입사 예정 직원
db.employees.insertMany([
{
name: "mongo",
age: 25,
dept: "database",
joinDate: new ISODate("2012-09-11"),
salary: 500000,
resignationDate: new ISODate("2014-06-10"),
bonus: null
},
{
name: "ognom",
age: 30,
dept: "devops",
isNegotiating: true,
}
])
2개 이상의 document 삽입은 insertMany
가 속도가 빠르다
for (i = 0; i<300; i++) {
db.employees.insertOne({a: i})
}
var docs = [];
for (i = 0; i<300; i++) {
docs.push({a: i});
}
db.employees.insertMany(docs);
updateOne
1개 document 를 수정ognom
직원 신규입사 처리
db.employees.updateOne(
{name: "ognom"}, // 첫 번째 인자는 `Query Filter` 가 들어감
{
$set: { // $set - 필드를 생성 또는 수정
salary: 350000,
dept: "backend",
joinDate: new ISODate("2023-03-06")
},
$unset: { // $unset - 필드를 제거
isNegotiating: "" // "" 으로 지정하면 제거됨
}
}
)
updateMany
여러개의 document 를 수정
재직자 기준으로 연봉 10% 인상
db.employees.updateMany(
{ resignationDate: { $exists: false }, joinDate: { $exists: true } }, // $exists - 필드의 존재 여부 return boolean
{
// $mul - multiply 약자로 여러개 지정시 사용
$mul: { salary: Decimal128("1.1") }
}
)
재직자 중 bonus
필드가 있는 사람에게 보너스 지급
db.employees.updateMany(
{ resignationDate: { $exists: false }, bonus: { $exists: true } },
{ $set : { bonus: 200000 } }
)
주의할 점은 null
에 대한 값을 지정하는 경우에 필드가 없는 document 도 true 값을 반환하기 때문에 꼭 $exists
로 체크해야 한다
deleteOne
1개의 document 를 삭제
db.employees.deleteOne({
name: "ognom"
})
여러개의 document 를 삭제
db.employees.deleteMany({}) // Query Filter `{}` 가 없으면 에러 발생하기 떄문에 꼭 같이 기입
만약 전체의 document 를 삭제하고 collection 까지 삭제하는 경우엔 다음 까지 추가 실행
show collections // 확인
db.employees.drop() // collection 삭제
show collections // 확인
'Database > Mongo' 카테고리의 다른 글
배열과 내장 document 를 다루는 방법 (Update) (0) | 2023.03.06 |
---|---|
배열과 내장 document 를 다루는 방법 (Read) (0) | 2023.03.06 |
유용한 Query 함수들 (0) | 2023.03.06 |
MongoDB - 기본 CRUD 예제 2 (0) | 2023.03.06 |
Mongo DB Replica Set 구축 (0) | 2023.03.04 |