首页 文章

mongodb聚合过滤器,用于具有大于或等于数字的字段的记录

提问于
浏览
9

我有一个四阶段聚合查询,形式为匹配 - >组 - >项目 - >排序 . 聚合工作正常并生成如下所示的数组 .

{ count: 48, ISP: 'LEASEWEB USA', percentRisky: 100 },
    { count: 51, ISP: 'ARETI INTERNET LTD', percentRisky: 100 },
    { count: 82, ISP: 'TINET SPA', percentRisky: 100 },
    { count: 109, ISP: 'GIGLINX', percentRisky: 100 },
    { count: 142, ISP: 'EGIHOSTING', percentRisky: 100 },
    { count: 857, ISP: 'VERSAWEB, LLC', percentRisky: 100 }

下面是我的聚合查询 . 有没有办法让我只显示'count'字段大于500的结果?我试过加入项目阶段没有运气 .

{ $match : { //match to documents which are from all clients, from last three days, and scored
            org : {"$in" : clientArray },
            frd : {$gt : new Date(JSON.stringify(util.lastXDates( 3 )))},
            sl : true 
        }},
        { $group : { //group by isp, get total count, and get count of risky
            _id : "$gog",
            count : { $sum : 1 },
            countRisky : { $sum : { $cond : { if : { $gte : [ "$scr", 65 ] } ,
                then : 1,
                else : 0
            }} }
        }},
        { $project : { //rename _id to isp, only show percent risky, and the count
            _id : 0,
            ISP : "$_id",
            percentRisky : { $multiply : [{ $divide : ["$countRisky", "$count"] }, 100] },
            count : 1
        }},
        { $sort : { //sort by percent risky
            percentRisky : 1,
            count : 1

1 回答

  • 16

    您可以在管道中包含多个 $match 阶段,因此在末尾添加第二个 $match

    ...
    {$match: {count: {$gt: 500}}}
    

相关问题