2014-01-30 91 views
1

我收藏Pphone領域唯一索引:插入多個文件合併爲MongoDB的同時需要唯一索引

db.P.ensureIndex({ phone: 1 }, { unique: true, dropDups: true }) 
db.P.insert({phone:"555-1234"}) 

如果我插入的文檔的數組,甚至一個文件有重複鍵:

db.P.insert([{phone:"911"},{phone:"555-1234"}]) 
> E11000 duplicate key error index: test.P.$phone_1 dup key: { : "555-1234" } 

整個插入失敗,並且沒有插入有效的數字。

問題:如何進行批量插入,確保插入有效的文檔,並獲取關於哪些插入失敗的信息? 用於顯示nodejs api代碼的獎勵積分。

+0

當我最後試了一下,這是不可能的。 –

+0

,我相信你會需要單獨現在要插入每個文檔。 – WiredPrairie

回答

2

MongoDB驅動程序有一個「ContinueOnError」選項,它會導致mongo跳過具有重複唯一鍵的記錄。至於鑑定所跳過的,每個文檔:「如果批量插入過程中出現多個錯誤,客戶端只接收所產生的最後一個錯誤(http://docs.mongodb.org/manual/core/bulk-inserts/

對於Node.js的,它會像

db.P.insert([{phone:"911"},{phone:"555-1234"}], {continueOnError:true}) 

http://mongodb.github.io/node-mongodb-native/api-generated/collection.html#insert

+0

我找到了這個文件,但容易使人誤解它*不*工作在mongo shell上,但是* do *從nodejs工作,謝謝! – Meekohi

相關問題