gpt4 book ai didi

node.js - 使用 Mongoskin 将多个文档插入 MongoDB

转载 作者:可可西里 更新时间:2023-11-01 10:32:24 24 4
gpt4 key购买 nike

我试图通过循环插入多个文档,但我遇到了 ObjecId 的唯一性问题。

我有这个功能:

// 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 Duplicate key error index: ...”。

问题: 为什么此循环尝试插入具有相同 ObjectID 的每个文档,因此生成错误? 我如何重写它以确保 ObjectId 每次都是随机的?

最佳答案

在第一次插入时,doc 被修改为具有新的 _id 字段。这意味着您需要在 for 循环开始时重置它,因为驱动程序不会向文档添加新的 _id 值(如果已经存在的话)。

关于node.js - 使用 Mongoskin 将多个文档插入 MongoDB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20242738/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com