2016-01-21 52 views
0

如何通過使用時間戳記進行標記來搜索mongoDB集合中的文檔?Mongoose搜索帶時間戳參數的FindOne

使用終端我得到了deisred結果:

db.posts.findOne({"created_at":ISODate("2016-01-20T01:28:23.825Z")}) 

貓鼬如何通過時間戳我做到這一點,搜索

我試圖把時間精確格式(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){}` 

但隨後這將返回數組或乾脆我可以添加另一個論據時間?

回答

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); 
    }) 
})