如何更新Meteor中嵌套子文档中的数组?

时间:2015-12-13 08:38:24

标签: mongodb meteor

我有这样的集合(称为project):

{
  "_id" : id,
  name: '',
  title: '',
  "user": [
    {
      "username" : "manager",
      "role" : [
        "manager"
      ],
      "group" : "group",
      "Assign" : [
        "education"
      ]
    },
  ],
  "category" : [
    "education"
  ]
}

我正在尝试更新集合以替换“Assign”数组项:

Project.update({
  _id: id,
  'user.Assign': cat
}, {
  $set: {
    'user.$.Assign.$': new Cat
  }
}, {
  multi: true
})

我得到了

  

如果没有包含数组的相应查询字段

,则无法应用位置运算符
但是

错误。在MongoDB中执行此操作的正确方法是什么?

1 个答案:

答案 0 :(得分:2)

看起来你不需要最后一个位置操作员。您可能希望在该简单数组上使用$ push之类的东西。尝试将更新语句中的$set更改为以下内容:

$push: {
    'user.$.Assign' : "new Cat"
}

当然,如果合适,您可以在此处使用其他数组运算符,例如$addToSet等。