Mongodb 这种猫鼬聚集有什么问题?
我正试图使用Mongodb 这种猫鼬聚集有什么问题?,mongodb,mongoose,momentjs,Mongodb,Mongoose,Momentjs,我正试图使用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([
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'))}
,我会在聚合中得到结果,这有点奇怪。区别在于Mongoose将根据模型定义的模式为find
而不是aggregate
转换查询值
这在文件中有所说明:
猫鼬不铸造管道级
这就解释了为什么使用{date:new date(now.startOf('day'))}
是有效的,因为这正是您必须使用aggregate
进行的手动转换,根据mongo文档,“[$match]查询语法与读取操作查询语法相同,”这表明,错误在于mongoose如何将这些时刻日期类对象转换为实际查询的日期。如果启用mongoose调试模式,您应该能够看到它发送给mongo的最终查询并进行比较。