고유 키 추가 후 MongoDB에서 중복 문서 방지
uid 및 sid 필드에 고유 인덱스를 추가했음에도 불구하고(db.user_services.createIndex ({"uid":1 , "sid": 1},{unique:true,dropDups: true})), MongoDB 3.0.0의 제한으로 인해 중복 문서가 계속 삽입될 수 있습니다.
기존 중복을 제거하려면 사용자 정의 절차를 사용할 수 있습니다.
db.events.aggregate([ { "$group": { "_id": { "uid": "$uid", "sid": "$sid" }, "dups": { "$push": "$_id" }, "count": { "$sum": 1 } }}, { "$match": { "count": { "$gt": 1 } }} ]).forEach(function(doc) { doc.dups.shift(); db.events.remove({ "_id": {"$in": doc.dups }}); }); db.events.createIndex({"uid":1 , "sid": 1},{unique:true})
이 절차는 중복을 제거하여 고유 인덱스가 의도한 대로 생성되도록 합니다.
MySQL의 "ON DUPLICATE KEY" 에뮬레이션 " 동작
PHP를 사용하여 중복 키 업데이트 속도=속도 1에서 MySQL의 삽입(값) 동작을 달성하려면 upsert 옵션이 있는 update() 메서드를 사용할 수 있습니다.
<code class="php">$collection->update( ["uid" => 1, "sid" => 1], [ '$set' => [ "field" => "this", "counter" => 1 // Incrementing the "counter" field by 1 ], '$setOnInsert' => [ "newField" => "another" ] ], ["upsert" => true] );</code>
$inc 연산자를 사용하여 rate 필드를 증가시킬 수 있습니다:
<code class="php">[ '$inc' => [ "rate" => 1 ] ],</code>
위 내용은 고유 키 추가 후 MongoDB에서 중복 문서를 방지하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!