Я пытаюсь написать довольно сложный запрос MongoDB, который возвращает набор результатов (событий), отфильтрованных только для будущих событий.
К сожалению, схема данных этих событий немного расстраивает.Пользователь может настроить событие с определенной датой окончания (это нормально для работы), или он может выбрать повторение, которое заканчивается на определенную дату (также хорошо) ..
, однако они также могут выбратьвозможность для события повторяться каждые X дней / недель / месяцев (есть поле типа, чтобы выбрать какой из них) для общего количества повторений Y.Поэтому, если я хочу рассчитать эффективную дату окончания, мне нужно использовать все три эти переменные в моем запросе.
Я борюсь с синтаксисом для манипулирования датами в запросе MongoDB, используя данные из базы данных.чтобы создать новый объект даты ...
Вот условие, которое я построил до сих пор, я пытаюсь завершить 3 строки, которые имеют / * * / comments.
Если кто-нибудь знаетспособ сделать это, я был бы очень признателен за любую помощь.Спасибо!
$or: [
{ 'when.endingDate': { $gte: new Date() } },
{ 'when.recurring.forever': { $eq: true } },
{ 'when.multipleDays': { $eq: true } },
{
$and: [
{ 'when.recurring.occurences': { $gte: 1 } },
{ $or: [
{ $and: [
{ 'when.recurring.type': { $eq: 'day' } },
{ /* when.endingDate + when.recurring.occurences * when.recurring.every * days >= new Date() */ }
] },
{
$and: [
{ 'when.recurring.type': { $eq: 'week' } },
{ /* when.endingDate + when.recurring.occurences * when.recurring.every * week >= new Date() */ }
]
},
{
$and: [
{ 'when.recurring.type': { $eq: 'month' } },
{ /* when.endingDate + when.recurring.occurences X when.recurring.every * month >= new Date() */ }
]
}
] }
]
},
{ $and: [
{ 'when.repeat': { $eq: true } },
{ 'when.recurring.until': { $gte: new Date() } }
] }
]