[mongodb] insert와 save의 차이점
mongodb의 insert()는 id의 duplicate 체크를 진행하지만, save()는 동일 id값이 들어오면 update를 한다. 그리고 save() 함수 변경시 변경/추가 여부를 결과값으로 알려준다.
part에 staf오타를 쳐서 staff로 수정하는 예제이다.
> db.user.insert({ "_id" : 4, "name" : "jackson", "part" : "staf", "title" : "lab" })
WriteResult({ "nInserted" : 1 })
> db.user.insert({ "_id" : 4, "name" : "jackson", "part" : "staff", "title" : "lab" })
WriteResult({
"nInserted" : 0,
"writeError" : {
"code" : 11000,
"errmsg" : "E11000 duplicate key error index: test.user.$_id_ dup key: { : 4.0 }"
}
})
> db.user.save({ "_id" : 5, "name" : "matt", "part" : "staf", "title" : "lab" })
WriteResult({ "nMatched" : 0, "nUpserted" : 1, "nModified" : 0, "_id" : 5 })
> db.user.save({ "_id" : 5, "name" : "matt", "part" : "staff", "title" : "lab" })
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
결과 확인
> db.user.find()
{ "_id" : 4, "name" : "jackson", "part" : "staf", "title" : "lab" }
{ "_id" : 5, "name" : "matt", "part" : "staff", "title" : "lab" }