2015-05-09 61 views
0

我想写一个表达式,允许我设置嵌套在其他文档中的项目的字段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
  • 是否有更简单的方法来编写上面的聚合查询?
+0

感谢。这一个帮助。 – Livioso

回答

2

明白了自己:

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