我正在尝试查询具有此文档格式的数据库:
{
"_id" : ObjectId("520b8b3f8bd94741bf006033"),
"value" : 0.664,
"timestamp" : ISODate("2013-08-14T13:48:35Z"),
"cr" : ISODate("2013-08-14T13:50:55.834Z")
}
我可以使用以下查询从日期时间中获取最后的记录:
db.mycol.find({timestamp:{$gt: ISODate("2013-08-14T13:48:00Z")}}).sort({x:1});
但我想把18分钟前的值字段和时间戳做一个集合。
6条答案
按热度按时间at0kjp5o1#
在这18分钟的部分中,这实际上不是关于MongoDB,而是关于JavaScript和mongo shell中可用的内容:
可以在mongo shell中工作,但是使用其他语言的Mongo驱动程序会有很大的不同。
要“投影”包含值和时间戳的较小架构:
同时应用:
当然,这仍然不是一个“集合”,因为可能存在重复项,要删除它们,可以使用聚合框架中的
$group
:eqzww0vc2#
您还可以执行以下操作
上面的查询将为您提供现在和60分钟的时间戳记录。如果您喜欢超过60分钟-比如2小时,您可以将表达式更改为(260601000),持续30分钟(3060*1000)
uqdfh47h3#
从
Mongo 5
开始,您可以使用$dateSubtract
:对于
$dateSubtract
,我们创建了最早的日期/时间,在此日期/时间之后我们保留文档,方法是从当前日期$$NOW
(startDate
)中减去18
(amount
)"minute"
(unit
)。4nkexdtk4#
您可以使用nodejs从mongodb访问当前时间戳的数据
码尾
k97glaaz5#
哇,多亏了@Alistair_纳尔逊,我才能获得n分钟前的数据,例如,从ISODate(“2013-08- 14 T14:00:00 Z”)获得最后18分钟的数据:
仅获取所需字段:
bweufnob6#