在我的 upsert 请求中,我想要:
如果它在那里,更新对象,又名
db.somecollection.update({x: 1}, {$inc: {x: 1}});
如果它不存在,则提供一个新对象,也就是
db.somecollection.update({x: 1}, {whole: 0, new: 'yata', object: 42});
有没有办法做到这一点 ?
问题是 upsert 似乎只有在您首先提供对象而不是修饰符时才有效。
编辑:我会更具体。
我想更新表单的对象
{_id: 12, a: 123, b: 234, c: 345}
我的更新只是在或之一a
上增加 1 。如果对象不在基础中,那么我想创建一个形式的对象b
c
{_id: 13, a: 1, b: 0, c: 0}
如果a
是我试图增加的领域。
现在,如果我正确阅读手册,我可以写
db.somecollection.update({_id: 12}, {$inc: {a: 1}}, true);
这可以很好地更新我的a
字段,但不会创建字段b
并且c
如果对象不存在。