Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MongoDB如何使用$set和$aggregate设置嵌套文档的字段?_Mongodb_Mongodb Query_Aggregation Framework - Fatal编程技术网

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

MongoDB如何使用$set和$aggregate设置嵌套文档的字段?,mongodb,mongodb-query,aggregation-framework,Mongodb,Mongodb Query,Aggregation Framework,我想编写一个表达式,允许我设置嵌套在其他文档中的项目的字段checked。我如何在MongoDB中实现这一点 { "_id" : ObjectId("55081de2162072120758fc53")[ { "_id": "55081de2162072120758fc53", "items": [ { "checked": false, "name": "Apples", "_id": "554df987a8e9950134aa72bd" },

我想编写一个表达式,允许我设置嵌套在其他文档中的项目的字段
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'}}
  • 如何编写一个查询,允许我将
    Apples
    项设置为
    false
  • 还有更简单的方法来编写上面的聚合查询吗?
    • 我自己买的:

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

      谢谢这个有帮助。