在Mongo中,如何在数组内的地图中取消设置字段?

时间:2011-11-25 15:36:13

标签: mongodb

我的一份文件如下:

{:a [{:b "something", :c "else"}, {:b "more" :c "fun"}]}

我想从数组中的每个映射中取消设置:b元素,但$运算符在这种情况下似乎不起作用。应该怎样做才能做到这一点?

1 个答案:

答案 0 :(得分:2)

看起来你遇到了“一系列对象”问题。当你有一个对象数组时,MongoDB没有一整套update操作。

这是可以做的事情。您可以访问a.0.ba.1.b。这些将访问数组中的第一个和第二个元素。所以你可以这样做:

db.coll.update({_id:"yourid"}, {$unset: {'a.0.b':1,'a.1.b':1}})

但是,您需要为每个文档生成正确的查询。有些文档可能在数组中有2个元素,有些可能有10个。所以这里肯定需要额外的编程。