Mongoose按日期范围和时间进行查询
Mongoose query by date ranges with moment
我下面的条件代码:
if (req.query.df == "today") {
start = moment().subtract(1,'days');
end = moment().add(1,'days');
condition = {"$gt":start, "$lt":end};
} else if(req.query.df == "yesterday") {
start = moment().subtract(2, 'days');
end = moment().subtract(1, 'days');
condition = {"$gt":start, "$lt":end};
}
我的猫鼬查询:
QuestionResource
.find({$and: [{status: status}, {"created_at": condition}]})
第一个案例"今天"的结果
[
{
"_id":"564717725971cffc2309e7a8",
"title":"asdasdas",
"text":"dasdasdasd",
"created_at":"2015-11-14T11:13:54.823Z"
},
{
"_id":"5637611ce6dafbf02af3c4b4",
"title":"fffffff",
"text":"asdasdasdasdasdasd",
"created_at":"2015-11-13T13:11:56.103Z"
}
]
第二行不应在此数组中。
另一个案例"昨天"
[
]
问题集合包含20多行,这些行在本周的不同时间created_at
。
我该如何解决这个问题?
如果您正试图实现这一点,那么您的两个查询都不能保证返回今天或昨天的条目。否则,它们将完全按照书面形式工作。
您的today查询返回从调用时的小时/分钟/秒到昨天的当前小时/分钟的所有记录。。。明天这就是你从昨天开始约会的原因。如果只想要今天的记录,则需要将$gt条件设置为昨天的实际结束(或今天的开始)。您可以使用moment().endOf('day')函数。
您昨天的条件工作原理类似,因为它们在两天前和一天前的当前小时/分钟时间之间进行搜索。您可能没有该范围内的任何数据。您还需要将$gt和$it日期设置为当天结束。
相关文章:
- Mongoose查询嵌套文档的时间或多或少为某个日期
- Mongoose查询在两个日期时间之间提取数据
- 查询日期时间选择器未在另一个函数调用中获取日期
- 使用所有登录时间按日期对查询进行休眠分组
- 谷歌分析查询上次事件的时间
- j查询保存时间和到期日期
- j查询日期选取器不显示时间输入值
- 以可在 Azure 移动服务 (Javascript) 中查询的方式保存日期时间
- 通过JavaScript中的PHP查询MySQL,时间间隔
- j查询文件上传显示剩余时间
- j查询开始时间/结束时间验证
- j查询返回错误时间的日期格式
- 节点 - MySQL 查询,需要几分钟时间,在几分钟后重复自己,然后完成原始查询
- SQL查询上的PHP AJAX日期时间范围问题
- 如何在MongoDB中建模和查询办公时间(日期、时区、dst)
- J查询时间如何制作进度条
- Mongoose按日期范围和时间进行查询
- j查询时间和日期
- MongoDB—查询时间范围而不是日期范围
- Jquery掩码-查询时间输入