【发布时间】:2019-08-12 10:24:24
【问题描述】:
我正在尝试使用 moment 对象查询我的 mongodb 集合。文档包含如下所示的日期字段:
"date" : ISODate("2019-03-21T00:00:00Z"),
这样的普通查询可以正常工作:
const now = moment().utc()
console.log(await Price.find({ date: now.startOf('day') }))
但是当我尝试这个时:
const results = await Price.aggregate([
{ $match: { date: now.startOf('day') } }
])
我没有得到任何结果。为什么会这样?
如果查询是{ date: new Date(now.startOf('day')) },我会在聚合中得到结果,这有点奇怪。
【问题讨论】:
-
根据 mongo 文档,“[$match] 查询语法与读取操作查询语法相同”,这表明错误在于 mongoose 如何转换那些时刻类似日期的对象进入其实际查询的日期。如果您启用 mongoose 调试模式,您应该能够看到它发送给 mongo 的最终查询并进行比较。