首页 > 解决方案 > 在 Mongo 中比较日期和时间

问题描述

我正在编写一个 mongo 查询以根据当前时间显示记录。但是,当我尝试查询日期和时间时,查询返回 0 条记录。以下是查询:

let now =  momenttz.tz(moment(),tz).toDate();
 tmpl.listSelectorFilter('scheduledVisits', {
    $gte: now,
    $lte: moment.utc(today, 'MM/DD/YYYY').endOf('week').toDate()
  });

注意:如果我将时间设置为零小时,它可以工作。

如何更改此查询以使其正常工作?任何帮助表示赞赏。

标签: javascriptmongodbmeteorfilter

解决方案


您要查询的数据是否具有要比较的时间戳或 dateTime 对象?本质上,您不会将记录与任何时间进行比较,因此 mongo 无法知道要过滤的内容。

我建议您执行类似 find 的操作,并使用适当的日期字段与记录中的日期进行比较:

例子:

db.collection.find({
{ $and: [ { data.date: { $gte: now } }, { data.date: { $lte: endOfWeek } } ] }
})

还请记住,在 mongo 土地上,您不能像使用 moment 那样使用函数,因此我放置“endOfWeek”,这将是您设置的类似于现在的变量:

let now =  momenttz.tz(moment(),tz).toDate();
let endOfWeek = moment.utc(today, 'MM/DD/YYYY').endOf('week').toDate()

推荐阅读