我有以下文件相應的查詢字段應用位置操作:不能沒有包含數組
{ "id" : "1",
"name": "Paul",
"a": { "b" : [{"name" : "laura", "lastname" : "Palmer"}]}
}
現在我想更新在B每姓氏。
我嘗試這樣做:
db.organizations.update({"name" : "Paul", "a.b" : {$exists: true}},
{ "$set" : {"a.b.$.lastname" : "no_lastname"}});
,但我得到:沒有包含數組的相應查詢字段 無法應用的位置操作。
有人有一個想法我應該做什麼?
它已經討論了堆棧溢出很多很多次,你就可以用$運算更新一個項目,你不能更新所有數組的條目 – Disposer 2014-11-21 15:43:34
那麼我應該怎麼做呢? – user1345883 2014-11-21 15:52:16
從概念上講,您得到的錯誤是因爲'query'參數必須包含您在'projection'參數中使用位置運算符'$'的字段。如果你的查詢包含'「a.b.lastname」:{$ exists:true}',你不會得到這個錯誤,但無論如何,只有'b'中匹配查詢的第一個子文檔纔會被更新。 – BatScream 2014-11-21 19:27:06