我正在尝试为每天创建的每个文档返回搜索结果。以下是我使用的查询。
var query = Document.find({}).populate('contacts');
var gte = moment(req.query.date, 'DD-MM-YYYY').startOf('Day');
var lte = moment(req.query.date, 'DD-MM-YYYY').endOf('Day');
query.where('dates.createdAt').gte(gte).lt(lte);
此查询可以使用几天但不是全部。我似乎无法理解这种行为。请帮忙。
查询字符串中日期的格式为DD/MM/YYYY
。
适用于:2016-04-16T00:02:30.065Z
不适用于:2016-04-15T19:02:59.758Z
答案 0 :(得分:2)
这是错误的,因为您没有初始化为.utc()
,而MongoDB日期存储在UTC中:
var gte = moment.utc(req.query.date, 'DD-MM-YYYY');
var lte = moment.utc(req.query.date, 'DD-MM-YYYY').endOf('Day');
也不需要startOf()
。
如果不构造那样,那么生成的Date
对象会因本地时区的差异而出现偏差。因此,为什么你没有看到选择工作的时间跨越日期。
此外,如果日期以01/01/2016
的形式出现,那么格式字符串将为'DD/MM/YYYY'
,但是您的问题可能是一个错字。