我想這在mongodb console:
db.foobar.update(
{ name: "Foobar" },
{
$set : { foo: { bar: 'bar' },
$inc: { 'foo.count': 1 }
}
}, true)
它返回一個「OK」,但db.foobar.find()
,返回一個空的記錄集。我試圖upsert
文件,所以它看起來像:
name: Foobar
foo: {
bar: 'bar'
count: 1
}
如果文檔不存在,則創建一個具有爲1的數,否則,只是增加了計數。爲什麼上面沒有工作?
這是行得通的。但爲什麼不能這樣工作:'db.foobar.update({name:「Foobar」},{$ set:{foo:{bar:'bar'}},$ inc:{'foo.count':1 }},true)'似乎在字符串中的設置將使它工作。但我不知道爲什麼 –
我沒有注意到! shell提供的錯誤信息是'更新中有衝突的mod'。對我來說,這表明$集合作爲一個整體在'foo'子文檔上運行,因此您不能在'foo'或其任何屬性(如'foo.count')上使用$ inc。我猜想在'foo.bar'上使用$ $,在'foo.count'上使用$ inc是可行的,因爲這兩個修飾符都是針對文檔的不相交部分。 – idrarig