【发布时间】:2016-03-26 03:18:42
【问题描述】:
我在 MongoDB 集合中有一系列文档,如下所示:
{ 'time' : '2016-03-28 12:12:00', 'value' : 90 },
{ 'time' : '2016-03-28 12:13:00', 'value' : 82 },
{ 'time' : '2016-03-28 12:14:00', 'value' : 75 },
{ 'time' : '2016-03-28 12:15:00', 'value' : 72 },
{ 'time' : '2016-03-28 12:16:00', 'value' : 81 },
{ 'time' : '2016-03-28 12:17:00', 'value' : 90 },
etc....
任务是 - 垃圾保留值为 80 的所有时间,查找值低于 80 的 entering 和高于 80 的 exiting
{ 'time' : '2016-03-28 12:14:00', 'result' : 'enter' },
{ 'time' : '2016-03-28 12:16:00', 'result' : 'exit' },
有没有办法让 map reduce 或聚合查询产生这样的结果? 我试图循环遍历排序的结果,但它的处理和内存非常昂贵 - 我需要进行一系列此类检查。
PS。我正在使用 Django 和 mongoengine 来执行调用。
【问题讨论】:
-
不投票作为“重复”(尚未),因为您的情况有点不清楚。看起来顺序迭代就是你真正想要的。您可以像这里的示例那样“强制”mapReduce 吐出结果,但除非您真的获得了一些东西,否则您可能不应该这样做。请注意,聚合框架根本无法像您在此处需要的那样在文档之间“跟踪”。
-
time字段是否有重复项?如果value是80,result是什么? -
好吧,如果
value是 80,我根据 OP 描述将其读作“排除”。
标签: django mongodb mongoengine