MongoDB 데이터 업데이트 하기 (upsert : 없으면 insert, 있으면 update), $inc 를 이용한 덧셈

리눅스/MongoDB|2020. 10. 20. 09:13
반응형

아래 예제를 통해 결과를 확인하면 이해가 빠릅니다.

upsert 를 사용하게 되면 조건에 맞는 데이터가 없을 경우 insert 되고, 있을 경우 내용이 update 됩니다.

여기에 $inc 를 이용하여 덧셈 까지 적용하였습니다.


> db.Counting.find();

아무 내용 없음


> db.Counting.update({"Date":"2020-10-20"}, {"$inc":{no:1}}, upsert=true);

WriteResult({

"nMatched" : 0,

"nUpserted" : 1,

"nModified" : 0,

"_id" : ObjectId("5f8e2742dce4436d25b4f5a2")

})

no 에 값 1을 입력


> db.Counting.find();

{ "_id" : ObjectId("5f8e2742dce4436d25b4f5a2"), "Date" : "2020-10-20", "no" : 1 }

update 를 사용 했지만 값이 없는 상태 이므로 insert 로 적용 되었습니다.


> db.Counting.update({"Date":"2020-10-20"}, {"$inc":{no:2}}, upsert=true);

WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

이번엔 no 에 값을 2 입력


> db.Counting.find();

{ "_id" : ObjectId("5f8e2742dce4436d25b4f5a2"), "Date" : "2020-10-20", "no" : 3 }

처음 입력한 값 1 에 2를 더하여 no 가 3이 되었습니다. 



* 여러개의 key 를 업데이트 하기
> db.Counting.update({"Date": "2020-10-20"}, {"$inc": {man: 1, woman: 1}}, upsert=true);
WriteResult({
"nMatched" : 0,
"nUpserted" : 1,
"nModified" : 0,
"_id" : ObjectId("5f8e40d1dce4436d25b4fec4")
})



반응형

댓글()