2013-03-19 3 views
0

Je voudrais définir deux querys mais malgré les exemples MongoDB je ne sais pas vraiment/compris comment faire:Définir MongoDB Interroge

Query1:

SELECT COUNT(*), SUM(PKTS), SUM(BYTES) FROM mytable 

Query2:

SELECT srcad, srcpo, dstad, dstpo, pro, COUNT(*), SUM(PKTS), SUM(BYTES) FROM mytable WHERE scrpo=80 OR dstpo=80 GROUP BY srcad, scrpo, dstad, dstpo, pro 

Cordialement

Répondre

1

Pour la première, la requête d'agrégation serait:

db.mytable.aggregate({$group:{_id:1, sump:{$sum:"$pkts"}, sumb:{$sum:"$bytes"} }}); 

Pour la seconde, vous faites la même chose, mais vous ajoutez une phase de match de $ au lieu de la clause where et vous groupez par plusieurs champs:

db.mytable.aggregate([ 
    {$match:{$or:[{scrpo:80},{dstpo:80}]} }, 
    {$group:{_id : {srcad:"$srcad",scrpo:"$scrpo", 
        dstad:"$dstad",dstpo:"$dstpo",pro:"$pro"}, 
      sump:{$sum:"$pkts"}, 
      sumb:{$sum:"$bytes"} 
    }} 
]);