如何在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查询也将不胜感激。