复制PostgreSQL的窗口函数,如lag,lead,over

时间:2012-02-07 23:59:53

标签: mongodb mapreduce

如何将PostgreSQL查询更改为mongodb bson调用?我在http://archives.postgresql.org/pgsql-general/2011-10/msg00157.php列出了相同的用例我想通过使用lag或lead之类的东西来计算两个日志条目之间的增量时间。在mongodb中有什么类似于Postgres的lag / lead语法吗?

select 
  index, 
  starttime, 
  endtime, 
  starttime - lag(endtime) over(order by starttime asc) as delta 
from test

http://www.postgresql.org/docs/8.4/static/functions-window.html

我正在查看http://www.mongovue.com/2010/11/03/yet-another-mongodb-map-reduce-tutorial/,似乎 map / reduce / finalize 应该这样做。 映射 id,开始和结束时间, reduce 什么也不做,然后在期间对其自身(双for s)进行内连接完成。我几乎可以,有点,有点,看到它......

2 个答案:

答案 0 :(得分:1)

这是您在应用程序中必须执行的操作。现在,mongoDB不支持这样的任何内容。

答案 1 :(得分:0)

您可以将某些窗口函数重写为子查询。看看在聚合框架中是否可行。此子查询应在完成过滤和分组之后。

Couchbase将具有标准的窗口功能。 https://blog.couchbase.com/on-par-with-window-functions-in-n1ql/