从Mongo文档中存储的数组中删除值

时间:2012-12-18 15:46:40

标签: mongodb

我在Mongo集合中有一个文档,看起来像这样:

{
  _id: [uuid]
  prop: 
    some: "text",
    subprop: ['foo', 'bar']
}

我想避免将整个记录拉出来,修改它并在可能的情况下将其推回去。我可以运行哪些更新,以便从'bar'中删除doc.prop.subprop,而不知道它存储在哪个索引?

谢谢:)

1 个答案:

答案 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]}匹配的所有文档上运行。