如果不存在,我需要插入一个文档.我知道"upsert"选项可以做到这一点,但我有一些特殊的需求.
首先,我只需要创建带有_id字段的文档,但前提是它还不存在.My _id字段是我生成的数字(不是ObjectId).如果我使用"upsert"选项,那么我会得到"Mod on _idnot allowed"
db.mycollection.update({ _id: id }, { _id: id }, { upsert: true });
我知道我们不能在$set中使用_id.
所以,我的问题是:在mongodb中,是否有任何方法可以原子化地"创建如果不存在的话"呢?
编辑:
var newUser = new User({ _id: id });
newUser.save(function (err) {
if (err && err.code === 11000) {
console.log('If duplicate key the user already exists', newTwitterUser);
return;
}
console.log('New user or err', newTwitterUser);
});
但我仍然怀疑这是否是最好的方法.