node.js - 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 替换 。notificationDaysBefore
8
7
任何帮助表示赞赏。谢谢!
编辑:我认为我最好做这样的事情:
await Bed.find({
}).where(today.diff('paidUntilDate')).in('notificationDaysBefore')
或者
await Bed.find({
notificationDaysBefore: today.diff('$paidUntilDate', 'day'),
})
因为notificationDaysBefore
包含一个数字数组,但我仍然没有弄清楚正确的语法。
解决方案
notificationDaysBefore
您可以像这样传递参考
const today = dayjs();
await Bed.find({
paidUntilDate: {
$lte: today.add(8, 'days'),
$gte: today.add('$notificationDaysBefore', 'days')
}
})
推荐阅读
- java - 尝试在 websphere 8.5.5.13 上部署 ear 时出现 AnnotationException?
- xamarin - 在 xamarin 工作室中找不到配置文件,在 xcode 中找到
- javascript - 流式'keydown'事件
- c# - 无法从 IIS 中托管的网站发出外部请求
- javascript - 在函数内反应运行函数
- javascript - 在 Chrome 中,如何知道是否存在“access-control-expose-headers”标头?
- resharper - 使用 ReSharper 的项目忽略代码检查设置的正确方法是什么?
- logstash - 无法使用 grok 匹配可选字段
- javascript - vue 组件(静态)不工作。我要解决
- vue.js - 如何为“vue-form-generator”插件创建新版本