我在Mongo集合中有一个文档,看起来像这样:
{
_id: [uuid]
prop:
some: "text",
subprop: ['foo', 'bar']
}
我想避免将整个记录拉出来,修改它并在可能的情况下将其推回去。我可以运行哪些更新,以便从'bar'
中删除doc.prop.subprop
,而不知道它存储在哪个索引?
谢谢:)
答案 0 :(得分:2)
您应该能够使用$ pull运算符执行此操作,该运算符可以从字段中提取特定值。您可以使用点表示法来获取subprop字段:
db.foo.update( { _id : [uuid] }, { $pull : { "prop.subprop" : "bar" } } );
如果要对集合中的多个文档运行更新,则需要使用以下语法在查询中设置multi:true:
db.foo.update( { _id : [uuid] }, { $pull : { "prop.subprop" : "bar" } }, { multi : true } );
这意味着更新查询将在集合中与{_id:[uuid]}匹配的所有文档上运行。