Mongodb 正在子阵列中更新第三层文档

Mongodb 正在子阵列中更新第三层文档,mongodb,meteor,insert-update,arrays,subdocument,Mongodb,Meteor,Insert Update,Arrays,Subdocument,我有以下文件(在项目集合中): 我可以使用以下方法对任务设置completed:true: completeTask: (projectID, taskID, ifCompleted) -> Projects.update { _id: projectID 'tasks.taskID': taskID }, $set: 'tasks.$.completed': ifCompleted return 如果我将文档更改为: { titl

我有以下文件(在项目集合中):

我可以使用以下方法对任务设置
completed:true

  completeTask: (projectID, taskID, ifCompleted) ->
    Projects.update {
      _id: projectID
      'tasks.taskID': taskID
    }, $set: 'tasks.$.completed': ifCompleted
    return
如果我将文档更改为:

{
  title: 'title.com'
  company: 'company'
  companyID: Random.id()
  category: 'category'
  starred: false
  createdAt: new Date
  categories: [
      {
        completed: true
        name: 'ideas'
        _id: Random.
        tasks: [
          {task: 'something', completed: false, taskID: Random.id()}
          {task: 'something', completed: false, taskID: Random.id()}
          {task: 'something', completed: false, taskID: Random.id()}
        ]
      }
      {
        completed: false
        name: 'development'
        _id: Random.id()
        tasks: [
          {task: 'something', completed: false, taskID: Random.id()}
          {task: 'something', completed: false, taskID: Random.id()}
          {task: 'something', completed: false, taskID: Random.id()}
        ]
      }
    ]
}
如何在任务上设置
completed:true

到目前为止我有

completeTask: (projectID, categoryID, taskID, ifCompleted) ->
    Projects.update {

除非您通过数组中的索引引用了
类别
任务
中的至少一个,否则不能引用。最后我将其移动到了一个单独的“任务”集合中。Mongo3.2应该增加对多个$positional选择器的支持。谢谢你的回复。
completeTask: (projectID, categoryID, taskID, ifCompleted) ->
    Projects.update {