首页 > 解决方案 > 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中的值和值 +1 替换 。notificationDaysBefore87

任何帮助表示赞赏。谢谢!

编辑:我认为我最好做这样的事情:

await Bed.find({
}).where(today.diff('paidUntilDate')).in('notificationDaysBefore')

或者

await Bed.find({
  notificationDaysBefore: today.diff('$paidUntilDate', 'day'),
})

因为notificationDaysBefore包含一个数字数组,但我仍然没有弄清楚正确的语法。

标签: node.jsmongodbmongoosedayjs

解决方案


notificationDaysBefore您可以像这样传递参考

const today = dayjs();
await Bed.find({
    paidUntilDate: {
      $lte: today.add(8, 'days'),
      $gte: today.add('$notificationDaysBefore', 'days')
    }
  })

推荐阅读