0

I have a document as follows (in a Projects collection):

      title: "title"
      company: "company"
      companyID: "companyID"
      category: "category"
      starred: false
      createdAt: new Date
      tasks: [
        {
          task:'something'
          completed: false
          taskID: Random.id()
        }
        {
          task:'something'
          completed: false
          taskID: Random.id()
        }
        {
          task:'something'
          completed: false
          taskID: Random.id()
        }
      ]

I can set completed: true on a task using this method:

  completeTask: (projectID, taskID, ifCompleted) ->
    Projects.update {
      _id: projectID
      'tasks.taskID': taskID
    }, $set: 'tasks.$.completed': ifCompleted
    return

if I change my document to this:

{
  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()}
        ]
      }
    ]
}

how can I set completed: true on a task?

So far I have

completeTask: (projectID, categoryID, taskID, ifCompleted) ->
    Projects.update {
offthegrass
  • 446
  • 1
  • 6
  • 16
  • You cannot unless you are referencing at least one of the `category` or `task` by its index in the array. – wdberkeley Mar 23 '15 at 16:03
  • I moved it to a separate 'Tasks' collection in the end. mongo 3.2 is supposed to be adding support for multiple $ positional selectors. thanks for the reply. – offthegrass Mar 23 '15 at 16:48

0 Answers0