Создание вида монго, который зависит от текущего времени

1

У меня есть коллекция, в которой есть поле даты, и я хочу создать mongo-представление, которое фильтрует все документы на текущую дату. Например, я хочу, чтобы в моем представлении содержались все документы за последние 7 дней.

У меня есть сценарий javascript, который создает представление с конвейером агрегации. Я использовал javascript method- новую Date() для записи состояния последних 7 дней:

{
  "$lt": [
     {"$subtract": [new Date(), "$DateOfDocument"]}, // difference in milliseconds
      1000 * 60 * 60 * 24 * 7              // 7 days in milliseconds
  ]
}

Но когда я запускаю сценарий, создающий представление, mongo вычисляет "новую дату()", а затем создает представление с результатом "new Date()" как ISODate. Теперь конвейер агрегации вычисляет представление в последний раз, когда я выполнял скрипт, а не фактическую текущую дату.

{
  "$lt": [
      {"$subtract": [ISODate("2018-02-05T06:52:32.10+0000"), "$DateOfDocument"]},
      604800000
  ]
}

Есть ли способ получить просмотр, отфильтрованный по текущей дате? Любой метод агрегирования для текущей даты, например oracle 'sysdate'? Я не хочу выполнять сценарий, который воссоздает представление каждый раз, когда я хочу прочитать представление.

Теги:
date
view
aggregation

1 ответ

0

Похоже, эта функция работает в MongoDB 3.7.
https://jira.mongodb.org/browse/SERVER-23656

  • 0
    Теперь перечислено как необходимое исправление для 4.1; надеюсь, это будет добавлено на этот раз!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню