2015-10-05 75 views
1

這個工作對我的地方:insertMany無序/ continueOnError在MongoDB中的NodeJS司機

db.collection('test').insert(docsArray, {ordered: false}); 

蒙戈v2.6.10

驅動的NodeJS v2.0.45

但是,同樣的代碼在服務器上失敗:

蒙戈v2.6.11

驅動的NodeJS v2.0.45

我無法理解爲什麼。

driver docsinsert已在贊成insertOne/insertMany/bulkWrite被depricated。所以,我嘗試使用這些新功能,但無濟於事。我希望它靜靜地跳過錯誤並插入剩餘的文檔。 現在,insertMany沒有無序的插入和bulkWrite沒有insertMany 目前正在執行此操作的官方方式是什麼?

+0

您是否嘗試過'【W:1,keepGoing:真正}'而不是'{下令:假}'? – marekful

+0

@marekful我剛剛嘗試過(使用'insert'和'insertMany')。它失敗了。雖然有文檔中有KeepGoing的示例(對於插入)。 – Sudhanshu

回答

2

發現:

var bulk = db.collection('test').initializeUnorderedBulkOp(); 
for (var i = 0; i < docs.length; i++) { 
    bulk.insert(docs[i]); 
}; 
bulk.execute(function (err, result) { 
    db.close(); 
}); 
+0

不適用於我...使用完全相同的代碼..只插入1條記錄 –

+0

我在計算中使用它,所以我不得不說,你可能會錯過一些東西,或者錯誤地使用它。 請檢查從bulk.execute返回的錯誤。 – Sudhanshu

+0

我正在以完全相同的方式使用它。但是,我的錯誤出現在自定義索引而不是_id字段。我在user.name字段上有一個唯一的索引設置,它應該是唯一的字段。每次我運行execute時,如果找到一個重複的鍵,在插入一個文檔後總會失敗。 –