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缺乏功能的区域,它支持有对象数组,但大多数更新操作符不适用于对象数组。 –