0
我的一個文件看起來是這樣的:在Mongo中,如何取消數組中的映射字段?
{:a [{:b "something", :c "else"}, {:b "more" :c "fun"}]}
我想取消設置:從陣列中的每個地圖B元素,但是$運營商似乎並沒有在這種情況下工作。這應該怎麼辦?
我的一個文件看起來是這樣的:在Mongo中,如何取消數組中的映射字段?
{:a [{:b "something", :c "else"}, {:b "more" :c "fun"}]}
我想取消設置:從陣列中的每個地圖B元素,但是$運營商似乎並沒有在這種情況下工作。這應該怎麼辦?
它看起來像你擊中了「對象數組」問題。當你有一個對象數組時,MongoDB沒有一套完整的update
操作。
下面是你可以做的事情。您可以訪問a.0.b
和a.1.b
。這些將訪問數組中的第一個和第二個元素。所以,你可以這樣做:
db.coll.update({_id:"yourid"}, {$unset: {'a.0.b':1,'a.1.b':1}})
但是,您將需要生成每個文檔正確的查詢。有些文件可能在數組中有2個元素,有些可能有10個。所以在這裏肯定需要額外的編程。
是的,這正是我的問題。我希望能有一個優雅的解決方案,而我對mongo的瞭解不夠。 :( – vedang
如果在一兩天內沒有更好的答案,我會將此答案標記爲已接受 – vedang
Thanks @vedang,這絕對是MongoDB缺乏功能的區域,它支持有對象數組,但大多數更新操作符不適用於對象數組。 –