我在MongoDB中存储了以下文档:
{
name: 'myDoc',
list: [
{
id:1
items:[
{id:1, name:'item1'},
{id:2, name:'item2'}
]
},
{
id:2
items:[
{id:1, name:'item1'},
{id:3, name:'item3'}
]
}
]
}
我找到了一种使用$addToSet
将元素添加到“list”的方法,但我找不到一种将项目添加到特定的“items”列表的方法。
例如,我得到以下内容:
{id:5, name:'item5'}
我想把它添加到id为2的列表中的元素项中。
2条答案
按热度按时间6ioyuze21#
一种方法是使用
$push
:http://docs.mongodb.org/manual/reference/operator/push/
您也可以用其他运算符(如
$addToSet
)替换$push
,以获得与您要查找的结果类似的结果。主要区别在于$push
将把新元素附加到列表中,而$addToSet
将在元素不存在时添加该元素(唯一的元素集)。92dk7w1h2#
您可以使用此选项:-
query
部分将从list
数组中查找包含id = 2
的文档,然后使用$
位置元素在该数组索引处添加一个新元素。请参阅
positional $ operator
您也可以将
list: {$elemMatch: {id: 2}}
仅替换为'list.id': 2
。但是当你想根据数组中的多个元素进行更新时,使用
$elemMatch
会更好。例如,当你的匹配条件是id
,而数组中的另一个字段是length
时:-