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的最终查询并进行比较。