我正在尝试使查询正常运行。它应该返回5个项目,这些项目的utcTime
介于两个日期之间。我已验证mongoDB中的文档确实有正确的日期,应该将其返回。如果删除.where
行,则此查询有效。实际上,如果我删除了gte
和lt
行,它会起作用。日期可以正确解析,所以我不确定为什么这个查询使我失败。
我还尝试了另一种方法,就是在这样的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"
}