Mongo查询分组仅输出小于1的小计

时间:2015-11-03 03:26:28

标签: mongodb mongodb-query aggregation-framework

我正在尝试按用户和电子邮件分组,只输出小计>我尝试了这个但是编译失败了。

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

1 个答案:

答案 0 :(得分:3)

您不必尝试将所有内容都放入单个$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以获取常见示例。