我在我的收藏文件喜欢:查询嵌套数组中元素的总数 - 嵌入文档的MongoDB
{
_id: 1,
activities: [
{
activity_id: 1,
travel: [
{
point_id: 1,
location: [-76.0,19.1]
},
{
point_id: 2,
location: [-77.0,19.3]
}
]
},
{
activity_id: 2,
travel: [
{
point_id: 3,
location: [-99.3,18.2]
}
]
}
]
},
{
_id: 2,
activities: [
{
activity_id: 3,
travel: [
{
point_id: 4,
location: [-75.0,11.1]
}
]
}
]
}
我能得到的活动总数,如下:
db.mycollection.aggregate(
{$unwind: "$activities"},
{$project: {count:{$add:1}}},
{$group: {_id: null, number: {$sum: "$count" }}}
)
我得到(3个活动):
{ "result" : [ { "_id" : null, "number" : 3 } ], "ok" : 1 }
问题:何我能获得所有旅行中的元素总数吗?
预期的结果:4
元件
它们是:
{
point_id: 1,
location: [-76.0,19.1]
},
{
point_id: 2,
location: [-77.0,19.3]
},
{
point_id: 3,
location: [-99.3,18.2]
},
{
point_id: 4,
location: [-75.0,11.1]
}
其实这是和仍然像'db.mycollection.aggregate简单({“$组“:{”_id“:null,”total“:{”$ sum“:{”$ sum“:{”$ map“:{”input“:”$ activities“,”as“:”a“, “in”:{“$ size”:“$$ a.travel”}}}}}}})'。这是因为'$ sum'可以直接用于数组,也可以作为自MongoDB 3.2以来的累加器。通过您自己删除的答案,您目前的MongoDB版本似乎比这个要旧得多。 –