MongoDB系列之分组topN
程序员文章站
2022-05-17 13:13:24
...
来源: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连接。