如何在MongoDB中同时插入多个文档,同时跳过具有重复字段的文档
我正在使用本地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
集合中已经存在具有电子邮件的文档的对象,因为我已经将电子邮件build模为唯一的。 这些文件应该在查询中跳过。
我知道这是可以实现的,如果usersArray
有一个_id
字段(我将使用continueOnError: true
),但不幸的是,我的usersArray
来自一个单独的来源。 做单插入效率低下,因为我的usersArray
可以有超过1000个对象。
我想到的解决方法是从db中select所有文档,并在我的节点应用程序中重新构build用户usersArray
,以减less对MongoDB的请求数。 有没有办法可以修改collection.insertMany()
函数来做到这一点? 原始的MongoDB查询也将不胜感激。