Дублирование оконных функций PostgreSQL, таких как lag, lead, over - PullRequest
3 голосов
/ 08 февраля 2012

Как мне изменить запрос PostgreSQL на вызов msonodb bson? У меня есть тот же вариант использования, указанный в http://archives.postgresql.org/pgsql-general/2011-10/msg00157.php. Я хотел бы рассчитать время разницы между двумя записями журнала, используя что-то вроде задержки или опережения. Есть ли что-то похожее в mongodb с синтаксисом отставания / отведения Postgres?

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 / уменьшение / finalize должно это сделать. Карта идентификатор, время начала и окончания, уменьшение ничего не делает, затем выполняет внутреннее соединение с самим собой (двойной for с) во время финализации, Я могу почти, вроде как, увидеть это ...

Ответы [ 2 ]

1 голос
/ 08 февраля 2012

Это то, что вам нужно сделать в вашем приложении. В данный момент mongoDB не поддерживает ничего подобного.

0 голосов
/ 23 ноября 2018

Вы можете переписать некоторые функции окна как подзапросы.Посмотрите, возможно ли это в структуре агрегации.Этот подзапрос должен быть выполнен после фильтрации и группировки.

Couchbase будет иметь стандартные оконные функции.https://blog.couchbase.com/on-par-with-window-functions-in-n1ql/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...