更新数组中子文档的字段

时间:2017-05-26 09:48:37

标签: arrays mongodb mongoose subdocument

我当然搜索了整个网站,但似乎有关于什么是“子文档”的令人困惑的术语......

想象一下,我们有两个集合(Pages和Items),其中包含以下模式:

Item:
  _id: ObjectId
  name: String

Page:
  _id: ObjectId
  titles: [ {value: String} ]
  items: [ Relationship <Item>, many: true ]

如果我尝试更新“titles”子阵列 - 一切正常:

db.pages.update({_id: ...}, { $set: {"titles.0.value": "x"} });

但如果我尝试更新“items”子文档 - 数组 - 它会失败:

db.pages.update({_id: ...}, { $set: {"items.0.name": "x"} });

返回错误:

"cannot use the part (0 of items.0.name) to traverse the element"

如果我尝试用这样的“$”替换“0”:

db.pages.update({_id: ...}, { $set: {"items.$.name": "x"} });

返回另一个错误:

"The positional operator did not find the match needed from the query. Unexpanded update: items.$.name"

如何正确更新相关子文档中的值?

0 个答案:

没有答案