db.collection.update()
Document를 수정할 때 사용한다.
Collection 안의 document를 수정한다. 특정 field를 수정할 수도 있고, 이미 존재하는 document를 대체 (replace)할 수도 있다. 기본 옵션으로는 단 하나의 document를 수정한다.
db.collection.update(
<query>,
<update>,
{
upsert: <boolean>,
multi: <boolean>,
writeConcern: <document>,
collation: <document>,
arrayFilters: [ <filterdocument1>, ... ],
hint: <document|string>, // Added in MongoDB 4.2
let: <document> // Added in MongoDB 5.0
}
)
Parameter | Type | Mendatory | Description |
query | document | O | 업데이트 할 document의 criteria를 정한다. find() 메소드에서 사용하는 query와 같다. |
update | document | O | document에 적용할 변동사항. |
upsert | boolean | X | 이 값이 true로 설정되면 query 한 document가 없을 경우, 새로운 document를 추가한다. (기본값 false) |
multi | boolean | X | 이 값이 true로 설정되면, 여러 개의 document를 수정한다. (기본값 false) |
참고: https://docs.mongodb.com/manual/reference/method/db.collection.update/
db.collection.update() — MongoDB Manual
Docs Home → MongoDB Manualdb.collection.update(query, update, options)Modifies an existing document or documents in a collection. The method can modify specific fields of an existing document or documents or replace an existing document entirely, dependi
docs.mongodb.com
[Sample Data 추가하기]
db.people.insert([
{ name: "Albert", age: 19 },
{ name: "Betty", age: 20 },
{ name: "Charlie", age: 23, skills: [ "mongodb", "nodejs"] },
{ name: "David", age: 23, score: 20 }
])
1. 특정 field 업데이트: Albert document의 age를 20으로 변경하기
db.people.update({name: "Albert"}, {$set: {age: 20}})
2. document를 replace: Betty document를 새로운 document로 대체하기
db.people.update({ name: "Betty"}, { name: "Betty 2nd", age: 10 })
- 새로운 document로 replace할 때 _id는 바뀌지 않는다.
3. 특정 field 제거하기: David document의 score field 제거하기
db.people.update({ name: "David"}, { $unset: { score: 1}})
4. criteria에 해당되는 document가 존재하지 않으면 새로 추가하기: Elly document가 존재하지 않으면 새로 추가
db.people.update({ name: "Elly" }, { name: "Elly", age: 17 }, { upsert: true })
5. 여러 document의 특정 field 수정하기: age가 20 이하인 document의 score를 10으로 설정하기
db.people.update(
{ age: { $lte: 20 } },
{ $set: { score: 10 } },
{ multi: true }
)
6. 배열에 값 추가하기: Charlie document의 skills 배열에 angularjs 추가하기
db.people.update(
{ name: "Charlie" },
{ $push: { skills: "angularjs" } }
)
7. 배열에 값 여러 개 추가하고 오름차순으로 정렬하기: Charlie document의 skills 에 c++, java를 추가하고 알파벳순으로 정렬하기
db.people.update(
{ name: "Charlie" },
{ $push: { skills: { $each: [ "c++", "java"], $sort: 1 }}}
)
8. 배열에서 값 제거하기: Charlie document에서 skills 값의 mongodb 제거
db.people.update(
{ name: "Charlie"},
{ $pull: { skills: "mongodb" } }
)
9. 배열에서 값 여러 개 제거하기: Charlie document에서 skills 배열 중 angularjs 와 java 제거
db.people.update(
{ name: "Charlie" },
{ $pull: { skills: { $in: ["angularjs", "java" ] } } }
)
참고: https://docs.mongodb.com/v3.2/reference/operator/update/
Update Operators — MongoDB Manual
Navigation This version of the documentation is archived and no longer supported. Reference > Operators > Update Operators Update Operators On this page The following modifiers are available for use in update operations; e.g. in db.collection.update() and
docs.mongodb.com
✔ Velopert MongoDB 강좌 (https://velopert.com/545) 를 학습한 후 정리한 포스팅 입니다.
'아카이브 > MongoDB' 카테고리의 다른 글
[MongoDB] Index 설정하기 (1) | 2021.12.27 |
---|---|
[MongoDB] find() 메소드 활용 (2) | 2021.12.19 |
[MongoDB] Document 조회하기 (1) | 2021.12.17 |
[MongoDB] Database/ Collection/ Document 생성 및 제거하기 (0) | 2021.12.16 |