如何通过使用时间戳进行搜索来搜索 mongoDB 集合中的文档?
使用终端我得到了deisred结果:
db.posts.findOne({"created_at":ISODate("2016-01-20T01:28:23.825Z")})
但是在 mongoose 我该怎么做,按时间戳搜索
我尝试将时间用于精确格式(ISO),但没有用。
router.get('/posts/:id', function(req, res){
Posts.findOne({'created_at': req.params.id}, function(err, data){
console.log(req.params.id);
res.json(data);
})
})
//req.params.id = 2016-01-20T01:28:23.825Z
在我的 帖子 架构中created_at: { type: Date, default: Date.now }
我想过用一些变量:
`Posts.find({'created_at': {"gte": new Date(2016, 7, 14) }}, function(err, data){}`
但是这会返回数组或者只是我可以为时间添加另一个参数吗?
答案 0 :(得分:1)
在您的查询中,您直接使用req.params.id
字符串类型。 MongoDB / Mongoose在这里没有做一些魔术来将字符串转换为日期,因此您的查询尝试将字符串与MongoDB中存储的日期值进行匹配。要解决您的问题,请先将req.params.id
转换为日期:
router.get('/posts/:id', function(req, res){
Posts.findOne({'created_at': new Date(req.params.id)}, function(err, data){
console.log(req.params.id);
res.json(data);
})
})