[MongoDB] Document Update & Delete
MongoDB
→ 도큐먼트 수정 및 삭제 방법
도큐먼트 수정
단일도큐먼트 교체
db.collection.replaceOne(
<query>,
<replacement>,
{
upsert: <boolean>,
writeConcern: <document>,
collation: <document>
}
)
수정이 아닌, 교체를 하는 개념이라는 점. upsert파라미터에 true가 설정되면 ‘쿼리에 해당하는 값’이 없는 경우 insert를 수행.
도큐먼트 수정
// updateOne
db.collection.updateOne(
<query>,
<update>,
{
upsert: <boolean>,
writeConcern: <document>,
collation: <document>,
arrayFilter: [<filterdocument1>, ...]
}
)
// updateMany
db.collection.updateMany(
<query>,
<update>,
{
upsert: <boolean>,
writeConcern: <document>,
collation: <document>,
arrayFilter: [<filterdocument1>, ...]
}
)
updateOne
: 처음 찾은 하나의 도큐먼트만 수정
updateMany
: 검색되는 모든 도큐먼트 수정
도큐먼트 수정연산자
$currentDate, $inc, $min, $max, $mul, $rename, $setOnInsert, $unset
도큐먼트가 배열일때 일부 요소를 수정하는 방법
// 테스트데이터 생성
db.character.insertMany([
{name: 'x', inventory: ['pen', 'cloth', 'pen']},
{name: 'y', inventory: ['book', 'cloth'], position:{x:1, y:5}},
{name: 'z', inventory: ['wood', 'pen'], postion:{x:0, y:9}}
]);
// 모든 배열 요소에 'pen'이라는 글자를 'pencil'로 수정하기 첫번째 방법
db.charactor.updateMany({},
{$set: {"inventory.$[penElem]": "pencil"}},
{arrayFilters: [{penElem:'pen'}]}
)
// 모든 배열 요소에 'pen'이라는 글자를 'pencil'로 수정하기 두번째 방법
db.charactor.updateMany(
{inventory:"pen"},
{$set: {"inventory.$[]": "pencil"}}
)
// 각 배열에서 'pen'과 일치하는 첫번째 요소만 'pencil'로 변경하기
db.charactor.updateMany(
{inventory:"pen"},
{$set: {"inventory.$": "pencil"}}
)
※ update 파라미터의 연산자 $addToSet, $pop, $pull, $push, $pullAll
도큐먼트 삭제
이전 내용인 update부분과 유사하다.
deleteOne, deleteMany
를 사용.
컬렉션 자체를 삭제하는 방법은 db.컬렉션명.drop()
Leave a comment