Запрос 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')
    }
  })
Другие вопросы по тегам