簡體   English   中英

MongoDB查詢分組依據

[英]MongoDB Query with group by

我想在mongodb中運行如下查詢(在SQL中)。 輸出應存儲在游標中。

SELECT ipv4 src, SUM(flags) 
FROM table 
WHERE starttime > 1262300400 AND endtime < y AND port dst = 22 
GROUP BY ipv4, src

我閱讀了http://docs.mongodb.org/manual/reference/aggregation/group/

並嘗試

myCursor = db.mycol.find(  [  
  {$group:{ _id: "$src",total:{$sum:"$flags"}}},
  {$match:{$and:[{"dst":22},
          {$and:[{"starttime":{$gt:1262300400}},{"endtime":{$lt:1264978800}}]}]}  
  }  ]);

但是失敗了。

順便說一句:是否可以僅通過檢查兩個unix時間戳之間的范圍來進行搜索? 在上面的示例中,我嘗試搜索12623004001264978800之間的時間

您需要使用aggregate方法而不是find做到這一點,你不需要使用所有這些$and運營商在$match的領域自然與。 然后將$match操作放在第一位,這樣您就不必在$group上創建比所需更多的文檔。

db.mycol.aggregate([
    {$match:{"dst":22, "starttime":{$gt:1262300400}, "endtime":{$lt:1264978800}}},
    {$group:{ _id:"$src", total:{$sum:"$flags"}}}
]);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM