upsert:true와 함께 $set 연산자를 사용해야 합니다. 먼저 문서로 컬렉션을 만들어 보겠습니다. −
> db.updateWithUpsertDemo.insertOne({"StudentFirstName":"John","StudentAge":21});{ "승인된":true, "insertedId":ObjectId("5cd2a61c345990cee87fd890.updateWithUpdateWithUpdate insertOne({"StudentFirstName":"래리","StudentAge":23});{ "승인됨" :true, "insertedId" :ObjectId("5cd2a624345990cee87fd891")}> db.updateWithUpsertName({".insertOne") David","StudentAge":24});{ "승인됨" :true, "insertedId" :ObjectId("5cd2a62c345990cee87fd892")}
다음은 find() 메서드를 사용하여 컬렉션의 모든 문서를 표시하는 쿼리입니다. -
> db.updateWithUpsertDemo.find().pretty();
이것은 다음과 같은 출력을 생성합니다 -
{ "_id":ObjectId("5cd2a61c345990cee87fd890"), "StudentFirstName":"John", "StudentAge":21}{ "_id":ObjectId("5cd2a624345990cee87fd891") StudentAge" :23}{ "_id" :ObjectId("5cd2a62c345990cee87fd892"), "StudentFirstName" :"David", "StudentAge" :24}
다음은 upserted 문서를 구성하기 위해 업데이트 및 쿼리 부분을 결합하는 쿼리입니다 -
> db.updateWithUpsertDemo.update({_id:ObjectId("5cd2a624345990cee87fd891")},{"$set":{"StudentFirstName":"Chris"}}, {upsert:true});WriteResult({"nMatched " :1, "nUpserted" :0, "nModified" :1 })
"StudentFirstName" 필드가 변경되었는지 확인합시다 -
> db.updateWithUpsertDemo.find().pretty();
이것은 다음과 같은 출력을 생성합니다 -