2015-11-03 83 views
0

我试图按用户和电子邮件进行分组,只输出小计> 1.我试过这个,但是编译失败。Mongo查询分组仅输出小于1的小计

db.member.aggregate( 
{"$group" : { 
    _id : {user:"$user", email: "$email"}, 
    count : { $sum : { if: { $gte: [ "$sum", 1 ] }, then: 1, else: 0 } 
} } }) 

回答

2

你不必尝试和适应一切都变成一个单一的$group阶段。这是一个聚合“管道”,应该这样使用。而就在一$match底:

db.member.aggregate([ 
    { "$group": { 
     "_id": { "user": "$user", "email": "$email" }, 
     "count": { "$sum": 1 } 
    }}, 
    { "$match": { "count": { "$gte": 1 } } } 
]) 

它基本上需要无论如何,因为“第一”你积累,然后进行过滤。很像SQL中的GROUP BYHAVING

另请参阅SQL To Aggregation Mapping Chart中常见示例的核心文档。