我对MongoDB原生JS驱动程序有点困惑,并给出了独特的约束条件。在这里阅读http://mongodb.github.com/node-mongodb-native/api-articles/nodekoarticle1.html,看起来在插入之后,可以传递一个“成功”回调来处理保存的文档(例如,可以从保存的文档中获取_id字段)。MongoDB Javascript批量插入唯一约束
但是,假设我保存了用户配置文件,每个配置文件都有一个电子邮件字段。我希望电子邮件字段是唯一的,所以我想我必须使用ensureIndex。然后假设我想批量插入10个用户配置文件,每个用户配置文件都有一个电子邮件字段,但这10个电子邮件中的2个已经存在于我的数据库中。那么通过这个独特的限制,这两个用户配置文件将不会被添加到数据库中,对吗?那么回调是什么回来? 8个保存的文件?或8个保存的文件和2个预先存在的文件?
编辑: 经过一些测试,我取得了一些很好的进展,但我仍然失去了一块。我会解释从上面继续我的例子。假设我有一个包含1个文档的用户配置文件集合,并且该文档有一个“email”字段:“[email protected]”。然后,假设我在此集合的电子邮件字段中放置了一个带有{unique:true}的索引。如果我再执行一个简单的插入:
collection.insert({ 'email': '[email protected]' }, { safe: true }, function (err, results) {
console.log(results);
});
导致回调上述回来不确定,因为与电子邮件的文件已经存在,所以没有进行插入。这很有道理,但我想要的是“结果”返回包含已存在的文档,这阻止了新的插入。那可能吗?