Запрос Mongoose: сравните одно значение с другим преобразованным значением того же документа.
Мне нужно запросить даты в paidUntilDate
свойство, которое на x дней позже, чем сегодня, где x находится в собственности notificationDaysBefore
того же документа. Я использую библиотеку dayjs для запроса дат.
Я обнаружил, что могу сравнивать значения в одном документе, используя $expr
, но я не знаю, могу ли я использовать одно из значений в качестве параметра для dayjs .add()
функция и сравните ее с другим значением.
В настоящее время у меня есть этот запрос, который получает paidUntilDate
даты, которые находятся в пределах 7–8 дней от сегодняшнего дня.
const today = dayjs();
await Bed.find({
paidUntilDate: {
$lte: today.add(8, 'days'),
$gte: today.add(7, 'days')
}
})
Мне просто нужно заменить 7
со значениями в notificationDaysBefore
собственность, и 8
с 7
значение +1.
Любая помощь приветствуется. Спасибо!
РЕДАКТИРОВАТЬ: Я думаю, мне лучше сделать что-то вроде этого:
await Bed.find({
}).where(today.diff('paidUntilDate')).in('notificationDaysBefore')
или
await Bed.find({
notificationDaysBefore: today.diff('$paidUntilDate', 'day'),
})
поскольку notificationDaysBefore
содержит массив чисел, но я так и не понял правильный синтаксис.
1 ответ
Вы можете передать ссылку на notificationDaysBefore
нравится
const today = dayjs();
await Bed.find({
paidUntilDate: {
$lte: today.add(8, 'days'),
$gte: today.add('$notificationDaysBefore', 'days')
}
})