Mongo 更新一个数组的子文档

use*_*818 2 mongoose mongodb mongodb-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
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

我需要更新文档方面的帮助。假设将 review_request_sent 更新为 true,其中 id 为 3,line_item 的对象 id 为 12。

所以最后一个文件变成

{
  id: 3,
  line_items: [
    {
     id: 23,
     review_request_sent: true
    },
    {
     id: 85,
     review_request_sent: true
    },
    {
     id: 12,
     review_request_sent: true
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

mic*_*lem 8

您可以使用$ 位置运算符

Model.update(
    { 'id': 3, 'line_items.id': 12 }, 
    { $set: { 
        'line_items.$.review_request_sent': false
    }}, function (err, numAffected) { ... }
);
Run Code Online (Sandbox Code Playgroud)