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