如果文檔不存在,則需要插入文檔。我知道「upsert」選項可以做到這一點,但我有一些特殊的需求。使用自定義_id值時插入mongodb
首先,我只需要創建帶有_id字段的文檔,但前提是它不存在。我的_id字段是由我生成的數字(不是ObjectId)。如果我使用「更新插入」選項,然後我得到「MOD上_id不允許」
db.mycollection.update({ _id: id }, { _id: id }, { upsert: true });
我知道,我們不能在$組使用_id。
所以,我的問題是:如果有任何方式在MongoDB中原子地創建「如果不存在」?
編輯: 提議@Barrie這工作(使用和的NodeJS貓鼬):
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);
});
但我仍然不知道它是做的最好的方式。
嘗試使用'save'操作嗎?即db.collection.save({「_ ID」:YOUR_ID}) – 2012-01-13 02:13:18
保存失敗,重複的鍵錯誤,如果已經存在 – aartiles 2012-01-13 08:25:27