javascript - 有没有办法改变我在 find() 函数中比较的字段的值?

标签 javascript node.js mongodb mongoose

我想将日期字段与日期范围进行比较。 这是我的原始代码:

let results=Show.find({_MovieId: paramMovieId, date : {$in : dateRange}},{});

但我想通过一个小的操作来比较日期字段。像这样的东西:

let results=Show.find({_MovieId: paramMovieId, moment(date).add(1,'d').format('YYYY-MM-DD'): {$in : dateRange}},{});

我似乎无法运行此代码,这似乎是一项不可能完成的任务。

有人知道有没有办法改变我在 find() 函数中比较的字段的值?

谢谢

最佳答案

$expr 运算符,您可以构建查询表达式,该表达式允许您操作日期字段并将其与某些表达式列表进行比较。

在以下示例中, $expr conditional statement 一起使用例如$setIsSubset 将转换后的日期字段 ( a day added ) 与 find() 方法中的 dateRange 数组进行比较

db.show.find({
    '$expr': {
        '$setIsSubset': [
            [ { '$dateToString': { 
                'format': '%Y-%m-%d',
                'date': { '$add': [ '$date', 24*60*60000 ] } 
            } } ], 
            dateRange
        ]
    }
})

$dateToString 您可以指定另一个名为 timezone 的选项,它设置操作结果的时区,例如津巴布韦哈拉雷本地时区

{ '$dateToString': {
    'date': '$date',
    'format': '%Y-%m-%d',
    'timezone': 'Africa/Harare'
} }

使用Olson Timezone Identifier格式为操作的时区和

{ '$dateToString': {
    'date': '$date',
    'format': '%Y-%m-%d',
    'timezone': '+02'
} }

使用UTC offset指定时区的格式。

关于javascript - 有没有办法改变我在 find() 函数中比较的字段的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51466355/

相关文章:

javascript - 在 CRM 2011 Javascript 中获取架构名称

node.js - NodeJS - 生成 PDF/A 兼容文档

Android Volley : POST request - req. NodeJS REST API 内部为空

node.js - 通过 Mongoose 模式将数据存储在mongodb中,不传递唯一真实键的值

node.js - 连接到 MongoDB 时身份验证总是失败

javascript - g:javascript在Firefox中工作,但在chrome中不工作

javascript - 为什么 ngOnChanges() 函数没有在 Angular 2 中触发?

MongoDB,日志无法logrotate

javascript - Node 永远说程序正在运行,但证据表明没有

node.js - 无法在我的 node.js 项目中的 wamp 套接字中配置 ssl