更新mongo中的数组元素

时间:2015-03-11 07:09:04

标签: arrays mongodb meteor

我想更新mongo doc中的数组。其结构类似于:

{
  _id: id,
  myArray: [
    {key1: val, key2: val, key3: val}, 
    {key1: val, key2: val, key3: val}, 
    {key1: val, key2: val, key3: val}
  ]
}

我需要能够做类似于更新WHERE的SQL。也就是说,通过使用id(您可以使用MyDoc.update({_id: id}...);进行简单搜索)在集合中获取此特定文档,然后根据键值对在数组中找到特定对象,然后更新不同的值键入同一个对象。

1 个答案:

答案 0 :(得分:1)

当mongodb查询数组字段时,它提供了一个位置运算符$,您可以使用它来访问该数组中的特定元素。您可以使用elemMatch运算符搜索对象数组中的字段。

示例:

db.myCollection.find({
   _id: ObjectId("53b1a44350f148976b0b6044"),
   myArray: {
      $elemMatch: {key1: 'somevalue'}
   }
}, {
   $set:{
      'myArray.$.key2': 'someOtherValue'
   }
});

请参阅:http://docs.mongodb.org/manual/reference/operator/update/positional/