3

The collection... This is the structure of a collection i have. I want help with an update query.

{ 
  id: 1, 
  line_items: [
    {
      id: 43,
      review_request_sent: true
    }
  ]
},
{
  id: 2,
  line_items: [
    {
      id: 1,
      review_request_sent: false
    },
    {
      id: 39
    },
 ]
},
{
  id: 3,
  line_items: [
    {
     id: 23,
     review_request_sent: true
    },
    {
     id: 85,
     review_request_sent: true
    },
    {
     id: 12,
     review_request_sent: false
    }
  ]
}

I would like help with an updating document. Let say update the review_request_sent to true where the id is 3 and line_item's object id is 12.

So the last document becomes

{
  id: 3,
  line_items: [
    {
     id: 23,
     review_request_sent: true
    },
    {
     id: 85,
     review_request_sent: true
    },
    {
     id: 12,
     review_request_sent: true
    }
  ]
}
user841818
  • 265
  • 1
  • 3
  • 7

1 Answers1

12

You can use the $ positional operator:

Model.update(
    { 'id': 3, 'line_items.id': 12 }, 
    { $set: { 
        'line_items.$.review_request_sent': false
    }}, function (err, numAffected) { ... }
);
michelem
  • 14,430
  • 5
  • 50
  • 66