Computer >> 컴퓨터 >  >> 프로그램 작성 >> MongoDB

값이 MongoDB에서 고유한 경우에만 삽입 그렇지 않으면 업데이트

<시간/>

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}