MongoDB 如何使用$set 和$aggregate 设置嵌套文档的字段?

MongoDB how do I use $set and $aggregate to set field of nested documents?

我想编写一个表达式,允许我设置嵌套在其他文档中的项目的字段 checked。我怎样才能在 MongoDB 中做到这一点?

{ "_id" : ObjectId("55081de2162072120758fc53")[ 
 {
  "_id": "55081de2162072120758fc53",
  "items": [
   {
    "checked": false,
    "name": "Apples",
    "_id": "554df987a8e9950134aa72bd"
   },
   {
    "checked": false,
    "name": "Jam",
    "_id": "554df98ba8e9950134aa72be"
   }
  }
 ]
 ...
 }

为了访问单个项目,我执行以下操作:

xy.aggregate([
  {$match: {_id: new ObjectId(idlist)}},
  {$unwind: '$items'},
  {$match: {'items._id': new ObjectId(iditem)}},
  {$project: {_id: false, item: '$items'}}

我自己知道了:

 db.xy.update({_id: ObjectId("55081de2162072120758fc53"), "items._id": ObjectId("554df987a8e9950134aa72bd")}, {$set: { "items.$.checked": true}}