sayısından büyük veya eşit bir alana sahip kayıtlar için Eşleşme -> grup -> proje -> sıralama biçiminde dört aşamalı bir toplama sorgum var. Toplama iyi çalışır ve aşağıdaki gibi bir dizi üretir.mongodb aggregation filter
{ 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 }
Toplama sorgularım aşağıdadır. Yalnızca 'sayım' alanının 500'den büyük olduğu yerde sonuçları göstermek için herhangi bir yol var mı? Proje sahnesine şanssız olarak eklemeyi denedim.
{ $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
soru muhtemelen cevap daha yararlıdır! –