加入唯一鍵後防止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 實作MySQL 在重複鍵更新率=速率1 上插入(值)的行為,可以使用PHP 實作MySQL1 上插入(值)的行為,可以使用帶有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 運算符,速率欄位可以遞增:
<code class="php">[ '$inc' => [ "rate" => 1 ] ],</code>
以上是新增唯一鍵後如何防止 MongoDB 中出現重複文件?的詳細內容。更多資訊請關注PHP中文網其他相關文章!