MongoDB系列之分組topN

  來源:https://groups.google.com/forum/#!topic/mongodb-user/Rjv6lyUCe1s 。

  Collction last3有兩個字段:variable和timestamp,需要先按variable分組,選出每組文檔中timestamp最晚的3個,再從這些文檔中找到timestamp最早的1個。

  last3的部分數據如下:

  集算器代碼:


  A1:連接MongoDB,連接字格式爲mongo://ip:port/db?arg=value&…

  A2:使用find函數從MongoDB中取數並排序,形成遊標。collectoin是last3,過濾條件是空,取出_id之外的所有字段,並按variable排序。集算器的find函數和mongdb的find+sort+limit函數類似,過濾條件的寫法遵循mongodb規範。

  A3:循環從遊標讀數,每次取variable字段相同的一組文檔。A3的作用範圍是縮進的B3到B4,其間可以用A3來引用循環變量。A3是內存數據,某次取數的結果如下:


  B3:選出本組文檔中timestamp最晚(大)的3個。

  B4:將B3不斷地追加到B2中。B2如下:


  A5:選出B2中timstamp最早(小)的那個文檔,即:


  A6:關閉mongodb連接。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章