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'}}
- 我如何编写一个允许我将
Apples
项设置为 false
的查询?
- 上面的聚合查询有没有更简单的写法?
我自己知道了:
db.xy.update({_id: ObjectId("55081de2162072120758fc53"), "items._id": ObjectId("554df987a8e9950134aa72bd")}, {$set: { "items.$.checked": true}}
我想编写一个表达式,允许我设置嵌套在其他文档中的项目的字段 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}}