我想更新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}...);
进行简单搜索)在集合中获取此特定文档,然后根据键值对在数组中找到特定对象,然后更新不同的值键入同一个对象。
答案 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/