我使用本机Node.js MongoDB驱动程序一次插入多个文档。我有一个javascript对象数组(其中每个对象代表一个用户),我使用以下代码。
var col = db.collection('users');
col.insertMany(usersArray, function(err, r) {
if (err) {
log('Bulk Insert Error', err);
} else {
log('Successful Insert', r.insertedCount);
db.close();
}
});
usersArray
数组中的每个用户文档都有一个电子邮件字段。我不希望在users
集合中已存在包含电子邮件的文档的对象中插入对象,因为我已将电子邮件建模为唯一。应在查询中跳过此类文档。
我知道如果usersArray
有一个_id
字段(我会使用continueOnError: true
),这是可以实现的,但不幸的是我的usersArray
来自一个单独的来源。单个插入是低效的,因为我的usersArray
可以有超过1000个对象。
我想到的工作是从db中选择所有文档并在我的节点应用程序中仅使用唯一文档重建usersArray
,以减少对MongoDB的请求数。有没有办法可以修改collection.insertMany()
函数来执行此操作?原始的MongoDB查询也将受到赞赏。