首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用节点在mongodb中更新SubDocument

使用节点在mongodb中更新SubDocument
EN

Stack Overflow用户
提问于 2014-08-12 12:20:05
回答 1查看 450关注 0票数 1

我有这样的收藏结构。

代码语言:javascript
复制
application_data: {
  name : A,
  site : B,
  location : [
    { key1 : value1, key2 : value2},
    { key3 : value3, key4 : value4}
  ]
}

现在我想将另一个数组作为子文档添加到" location“中,这样我的位置就变成了

代码语言:javascript
复制
location : [
  { key1 : value1, key2 : value2},
  { key3 : value3, key4 : value4, key5 :[{subkey1:subvalue1, subkey2:subvalue2}]}
]

我试过$push & $addToSet,但没有帮到我。有人能帮我吗?如果您使用nodejs解释一个示例,将很有帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-08-12 12:53:13

实际上,您要做的是向现有的子文档中添加新字段。您可以使用$set位置运算符$来完成

代码语言:javascript
复制
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'添加多个子文档,则效果更好。

代码语言:javascript
复制
db.applications.update({
  name: 'A',
  'location.key3': 'value3'
}, {
  $push: {
    'location.$.key5': {
      subkey1: 'subvalue1',
      subkey2: 'subvalue2'
    }
  }
})

代码语言:javascript
复制
db.applications.update({
  name: 'A',
  'location.key3': 'value3'
}, {
  $addToSet: {
    'location.$.key5': {
      subkey1: 'subvalue1',
      subkey2: 'subvalue2'
    }
  }
})

有关更多信息,请参见更新数组中的文档

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25264142

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档