我的一份文件如下:
{:a [{:b "something", :c "else"}, {:b "more" :c "fun"}]}
我想从数组中的每个映射中取消设置:b元素,但$运算符在这种情况下似乎不起作用。应该怎样做才能做到这一点?
答案 0 :(得分:2)
看起来你遇到了“一系列对象”问题。当你有一个对象数组时,MongoDB没有一整套update
操作。
这是可以做的事情。您可以访问a.0.b
和a.1.b
。这些将访问数组中的第一个和第二个元素。所以你可以这样做:
db.coll.update({_id:"yourid"}, {$unset: {'a.0.b':1,'a.1.b':1}})
但是,您需要为每个文档生成正确的查询。有些文档可能在数组中有2个元素,有些可能有10个。所以这里肯定需要额外的编程。