У меня есть коллекция, в которой есть поле даты, и я хочу создать 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'? Я не хочу выполнять сценарий, который воссоздает представление каждый раз, когда я хочу прочитать представление.
Похоже, эта функция работает в MongoDB 3.7.
https://jira.mongodb.org/browse/SERVER-23656