这种猫鼬聚合有什么问题?

时间:2019-03-21 14:20:42

标签: 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([
    { $match: { date: now.startOf('day') } }
  ])

我没有结果。为什么会这样?

如果查询为{ date: new Date(now.startOf('day')) },我将获得汇总的结果。

1 个答案:

答案 0 :(得分:1)

区别在于,猫鼬会根据模型的已定义架构为find而不是aggregate投射查询值。

文档here中对此进行了说明:

  

猫鼬投放管道阶段。

下面将解释使用{ date: new Date(now.startOf('day')) }的原因,因为这正是您必须使用aggregate进行的手动投射。