使用猫鼬查询日期范围之间的项目

时间:2020-05-21 00:34:36

标签: javascript mongodb express mongoose

我正在尝试使查询正常运行。它应该返回5个项目,这些项目的utcTime介于两个日期之间。我已验证mongoDB中的文档确实有正确的日期,应该将其返回。如果删除.where行,则此查询有效。实际上,如果我删除了gtelt行,它会起作用。日期可以正确解析,所以我不确定为什么这个查询使我失败。

我还尝试了另一种方法,就是在这样的find函数中放置一个过滤器

{
  "utcTime": {
      "$gte": new Date(req.params.startdate),
      "$lt": new Date(req.params.enddate)
  }
}

但这也不起作用。

// Get the top 5 items sorted in decreasing order by karma in between
// the specified dates
listItemRoute.route('/top5/:startdate/:enddate').get((req, res) => {

  console.log(req.params.startdate) //2020-05-13T07:00:00Z
  console.log(req.params.enddate)   //2020-05-20T07:00:00Z

  ListItem
    .find()
    .limit(5)
    .where('utcTime').gte( new Date(req.params.startdate) ).lt( new Date(req.params.enddate) )
    .sort({karma: -1})
    .exec((error, data) => {
      if (error) {
        return next(error)
      } else {
        res.json(data)
      }
    })
})

这是我的模特

// Define collection and schema
let ListItemSchema = new Schema({
   name: {
      type: String,
      required: true
   },
   karma: {
      type: Number
   },
   utcTime: {
      type: Date
   }
})

一切看起来都正确,我尝试了许多其他stackoverflow建议,但都没有用。任何帮助都会很棒。

编辑:数据库数据示例

{
    "name": "TITLE BLAH",
    "karma": 11502,
    "utcTime": "2020-05-17T09:50:21Z"
}

0 个答案:

没有答案