如果您想在过去5分钟内获得所有新鲜事物,则必须进行一些计算,但这并不难...
首先在要匹配的属性上创建索引(包括排序方向-1表示降序,1表示升序)
db.things.createIndex({ createdAt: -1 }) // descending order on .createdAt
然后查询最近5分钟(60秒* 5分钟)内创建的文档...。因为javascript的.getTime()
返回毫秒数,您需要将其乘以1000才能将其用作new Date()
构造函数的输入。
db.things.find({
createdAt: {
$gte: new Date(new Date().getTime()-60*5*1000).toISOString()
}
})
.count()
的解释new Date(new Date().getTime()-60*5*1000).toISOString()
如下:
首先,我们计算“ 5分钟前”:
new Date().getTime()
给我们当前时间(以毫秒为单位)
- 我们要从中减去5分钟(以毫秒为单位):
5*60*1000
-我乘以60
几秒钟即可轻松更改。我可以更改5
为120
2小时(120分钟)。
new Date().getTime()-60*5*1000
给我们1484383878676
(5分钟前,以毫秒为单位)
现在我们需要将其输入new Date()
构造函数中,以获取MongoDB时间戳所需的ISO字符串格式。
{ $gte: new Date(resultFromAbove).toISOString() }
(mongodb .find()查询)
- 由于我们没有变量,因此我们一口气完成了所有操作:
new Date(new Date().getTime()-60*5*1000)
- ...然后转换为ISO字符串:
.toISOString()
new Date(new Date().getTime()-60*5*1000).toISOString()
给我们 2017-01-14T08:53:17.586Z
当然,如果您使用的是node-mongodb-native驱动程序,那么使用变量会更容易一些,但这在mongo shell中有效,这是我通常用来检查事物的东西。