我的条件代码如下:
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};
}
我的mongoose查询:
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
次不同。
我该如何解决这个问题?
答案 0 :(得分:2)
如果您正在尝试完成此操作,那么您的查询都不保证从今天或昨天返回条目。否则他们的写作就完美无缺。
您今天的查询会在调用时返回小时/分钟/秒的所有记录,但昨天会返回当前小时/分钟...明天。这就是你从昨天开始约会的原因。如果您只想要今天的记录,则需要将$ gt条件设置为昨天(或今天的开头)的实际结束时间。您可以使用moment()。endOf('day')函数。
您昨天的标准类似地工作,因为他们在两天前和一天前的当前小时/分钟时间之间进行搜索。您可能没有该范围内的任何数据。您还需要将$ gt和$ it日期设置为当天结束。