2014-06-17 15 views
9

Ho una query di aggregazione in quattro fasi sotto forma di corrispondenza -> gruppo -> progetto -> ordinamento. L'aggregazione funziona correttamente e produce una matrice come la seguente.filtro di aggregazione mongodb per record con un campo maggiore o uguale a un numero

{ 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 } 

Di seguito è la mia query di aggregazione. C'è un modo per me di mostrare solo i risultati in cui il campo 'count' è maggiore di 500? Ho provato ad aggiungere alla fase del progetto senza fortuna.

 { $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

La domanda è probabilmente più utile che la risposta! –

risposta

16

È possibile includere più $match fasi vostra pipeline, in modo da aggiungere una seconda $match alla fine:

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

Lo stavo facendo ma con una dichiarazione del progetto $, l'ho modificato per abbinarlo e ora funziona Grazie! Segnerà come risolto in 2 minuti :) – isaac9A

Problemi correlati