upsert를 사용할 수 있습니다. 즉, 값을 삽입할 때마다 값이 이미 존재하면 업데이트가 수행됩니다. 값이 이미 존재하지 않으면 삽입됩니다.
먼저 문서로 컬렉션을 생성하겠습니다.
> db.onlyInsertIfValueIsUniqueDemo.insertOne({"StudentName":"Larry","StudentAge":22});{ "acknowledged":true, "insertedId":ObjectId("5c9a633815e86fd1496b3") insertOne({"StudentName":"Mike","StudentAge":21});{ "승인된":true, "insertedId":ObjectId("5c9a634a15e86fd1496b38a5")}> db.onlyInsertOne({"StudentUniqueDemo":Sam","StudentAge":24});{ "승인됨" :true, "insertedId" :ObjectId("5c9a635015e86fd1496b38a6")}
다음은 find() 메서드를 사용하여 컬렉션의 모든 문서를 표시하는 쿼리입니다.
> db.onlyInsertIfValueIsUniqueDemo.find().pretty();
그러면 다음과 같은 출력이 생성됩니다.
{ "_id":ObjectId("5c9a633815e86fd1496b38a4"), "StudentName":"래리","StudentAge":22}{ "_id":ObjectId("5c9a634a15e86fd1496b", "StudentName") StudentAge" :21}{ "_id" :ObjectId("5c9a635015e86fd1496b38a6"), "StudentName" :"Sam", "StudentAge" :24}
사례 1 :다음은 값이 이미 존재하는 경우의 쿼리입니다. 삽입하는 값이 이미 존재하므로 업데이트됩니다.
> db.onlyInsertIfValueIsUniqueDemo.update({StudentName:"Mike"},{$set:{"StudentAge":27}},{ upsert:true});WriteResult({ "nMatched" :1, "nUpserted" :0, "nModified" :1 })
모든 문서를 다시 한 번 보십시오. 다음은 쿼리입니다.
> db.onlyInsertIfValueIsUniqueDemo.find().pretty();
그러면 다음과 같은 출력이 생성됩니다.
"Mike>{ "_id":ObjectId("5c9a633815e86fd1496b38a4"), "StudentName":"래리", "StudentAge":22}{ "_id":ObjectId("5c9a634a15e86fd1496b", "StudentName") StudentAge" :27}{ "_id" :ObjectId("5c9a635015e86fd1496b38a6"), "StudentName" :"Sam", "StudentAge" :24}사례 2 :다음은 값이 고유한 경우의 쿼리입니다. 삽입하려는 값이 이미 존재하지 않으므로 삽입됩니다.
>db.onlyInsertIfValueIsUniqueDemo.update({StudentName:"David"},{$set:{"StudentAge":25}},{ upsert:true});WriteResult({ "nMatched" :0, "nUpserted" :1, "nModified" :0, "_id" :ObjectId("5c9a654ce628c11759caea54")})
모든 문서를 다시 한 번 보십시오. 다음은 쿼리입니다.
> db.onlyInsertIfValueIsUniqueDemo.find().pretty();
그러면 다음과 같은 출력이 생성됩니다.
"Mike>{ "_id":ObjectId("5c9a633815e86fd1496b38a4"), "StudentName":"래리", "StudentAge":22}{ "_id":ObjectId("5c9a634a15e86fd1496b", "StudentName") "StuvidAge":27}{ "_id":ObjectId("5c9a635015e86fd1496b38a6"), "StudentName":"Sam", "StudentAge":24}{ "_id":ObjectId("5c9a654ce628c5175")," , "학생 연령" :25}