文档示例:
{
"_id" : ObjectId("53329dfgg43771e49538b4567"),
"u" : {
"_id" : ObjectId("532a435gs4c771edb168c1bd7"),
"n" : "Salman khan",
"e" : "salman@gmail.com"
},
"ps" : 0,
"os" : 1,
"rs" : 0,
"cd" : 1395685800,
"ud" : 0
}
查询:
db.collectiontmp.aggregate([
{$match: {os:1}},
{$project : { name:{$toUpper:"$u.e"} , _id:0 } },
{$group: { _id: "$u._id",total: {$sum:1} }},
{$sort: {total: -1}}, { $limit: 10 }
]);
我需要从上述查询中获取以下内容:
- 按
u._id
进行分组 返回记录的总数和电子邮件,格式如下:
{ "result": [ { "email": "", "total": "" }, { "email": "", "total": "" } ], "ok": 1 }
$match
通常应该是你的第一个阶段,因为这是可以使用索引的地方。如果需要,稍后添加其他过滤器以进行额外的筛选。 - Neil Lunn