我有这样的收藏结构。
application_data: {
name : A,
site : B,
location : [
{ key1 : value1, key2 : value2},
{ key3 : value3, key4 : value4}
]
}现在我想将另一个数组作为子文档添加到" location“中,这样我的位置就变成了
location : [
{ key1 : value1, key2 : value2},
{ key3 : value3, key4 : value4, key5 :[{subkey1:subvalue1, subkey2:subvalue2}]}
]我试过$push & $addToSet,但没有帮到我。有人能帮我吗?如果您使用nodejs解释一个示例,将很有帮助。
发布于 2014-08-12 12:53:13
实际上,您要做的是向现有的子文档中添加新字段。您可以使用$set和位置运算符$来完成
db.applications.update({
name: 'A', // querying for parent document
'location.key3': 'value3' // querying for an exact subdocument to add new field to
}, {
$set: {
'location.$.key5': [{
subkey1: 'subvalue1',
subkey2: 'subvalue2'
}]
}
})可以使用$push或$addToSet实现相同的结果,如果要向'location.key5'添加多个子文档,则效果更好。
db.applications.update({
name: 'A',
'location.key3': 'value3'
}, {
$push: {
'location.$.key5': {
subkey1: 'subvalue1',
subkey2: 'subvalue2'
}
}
})或
db.applications.update({
name: 'A',
'location.key3': 'value3'
}, {
$addToSet: {
'location.$.key5': {
subkey1: 'subvalue1',
subkey2: 'subvalue2'
}
}
})有关更多信息,请参见更新数组中的文档。
https://stackoverflow.com/questions/25264142
复制相似问题