[英]Upsert an array of items with MongoDB
我有一个我想要插入到MongoDB集合中的对象数组,但是我想先检查集合中是否已存在每个项目。 如果它不存在则插入它,如果它存在则不插入它。
经过一些谷歌搜索后,看起来我最好使用update方法,并将upsert属性设置为true。
如果我将它传递给单个项目,以及如果我遍历我的数组并一次插入一个项目,这似乎工作正常,但是我不确定这是否是正确的方法,或者如果它是效率最高。 这就是我现在正在做的事情:
var data = [{}, {}, ... {}];
for (var i = 0; i < data.length; i++) {
var item = data[i];
collection.update(
{userId: item.id},
{$setOnInsert: item},
{upsert: true},
function(err, result) {
if (err) {
// Handle errors here
}
});
}
迭代我的数组并逐个插入它们是最有效的方法,还是有更好的方法?
根据您的具体需求,我可以在这里看到两个选项:
$setOnInsert
可以缓解该问题。 ordered
选项设置为false
),以便MongoDB在其中一个文档出错时继续插入其余文档。 至于性能,使用第二个选项MongoDB将使用索引来查找可能的重复。 所以很有可能这会表现得更好。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.