集合结构如下
{ _id : 1, array : [ ... ... ] }
{ _id : 2, array : [ ... ... ] }
...
{ _id : n, array : [ ... ... ] }
需求一,想要获取每一条文档的 array 的length,结果类似如下
{ _id : 1, arrayLength : 1 }
... ...
{ _id : n, arrayLength : x }
需求二,通过aggregate获取array的总计,结果类似如下
{ _id : 0, arrayTotalLength : y }
db.inventory.aggregate(
[
{
$project: {
arrayLength: { $size: "$array" }
}
}
]
)
第一个用mapreduce
再把第一个的返回集合用一下方法
db.collection.aggregate([
{$group:{_id:"$name",count:{$sum:1},total:{$sum:"$num"}}
]);