0
在我UPSERT要求,我想这两个:使用改性剂或在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
一个,b
或c
递增1。如果对象不在基地,然后我想创建形式
{_id: 13, a: 1, b: 0, c: 0}
的对象,如果a
是我试图增加该领域。现在
,如果我正确地阅读手册,我可以写
db.somecollection.update({_id: 12}, {$inc: {a: 1}}, true);
这将很好地工作来更新我的a
场,但如果对象不存在,不会创建领域b
和c
。
请看到我的编辑。对不起,没有问一个完整的问题在第一个地方;( – m09
@Mog见更新的答案。 – JohnnyHK
聪明,谢谢!似乎有限虽然。我不明白为什么而不是布尔作为第三个参数,对象不是如果有人需要正常更新,则为null。无论如何... – m09