Guy*_*and 47 mongodb mongodb-query
我在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'}
]
}
]
}
Run Code Online (Sandbox Code Playgroud)
我找到了一种方法,可以使用"list"添加元素,$addToSet但是找不到添加到项目的"项目"列表的方法.
例如,我得到以下内容:
{id:5, name:'item5'}
Run Code Online (Sandbox Code Playgroud)
我想将它添加到列表中元素的项目,ID为:2.
Sam*_*aye 48
一种方法是$push:
db.col.update(
{ name: 'doc', 'list.id': 2 },
{$push: {'list.$.items': {id: 5, name: 'item5'}}}
)
Run Code Online (Sandbox Code Playgroud)
http://docs.mongodb.org/manual/reference/operator/push/
您也可以替换$push其他运算符(可能)$addToSet以获得您正在寻找的确切结果.
Roh*_*ain 14
你可以用这个: -
> var toInsert = {id: 5, name: 'item6'}
> db.abc.update(
{ name: 'myDoc', list: { $elemMatch: { id: 2 } } },
{ $addToSet: { 'list.$.items': toInsert } }
)
Run Code Online (Sandbox Code Playgroud)
该query部分将从list数组中找到该文档id = 2.然后我们使用$位置元素在该数组索引处添加一个新元素.
你也可以list: {$elemMatch: {id: 2}}用just 替换'list.id': 2.
但是$elemMatch当你想根据数组的多个元素进行更新时,使用会更好.例如,当你的匹配标准是id和阵列中的另一个字段说length: -
list: {$elemMatch: {id: 2, length: 5}}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
55905 次 |
| 最近记录: |