2
我想通過一個循環插入幾個文檔,但是我遇到了ObjecId的唯一性問題。用Mongoskin將多個文檔插入到MongoDB中
我有這樣的功能:
// Fetch all client documents.
db.collection('clients').find({}, {cost: 1}).toArray(function(err, dbDocs) {
if (err) throw err;
// Set up a general doc.
var currentTime = new Date();
var doc = {
year: currentTime.getFullYear(),
quarter: Math.floor(currentTime.getMonth()/3) + 1,
paid: false
};
// For each client document, insert a document to invoices collection.
for (var i = 0, j = dbDocs.length; i < j; i += 1) {
doc.quarterCost = (dbDocs[i].cost.monthly * 3);
doc.client_id = dbDocs[i]._id;
db.collection('invoices').insert(doc, function(err, result) {
if (err) throw err;
if (result) console.log('Invoice created');
});
}
});
我得到一個「mongoError:E110000重複鍵錯誤指數:......」第一個文件被創建並插入之後。
問:爲什麼此環路嘗試每一個文檔中插入使用相同的對象ID,因此產生一個錯誤? 如何重寫這個以確保ObjectId每次都是隨機的?