gpt4 book ai didi

MongoDB 获取每秒结果

转载 作者:可可西里 更新时间:2023-11-01 09:27:22 25 4
gpt4 key购买 nike

在 MongoDB 中,所有文档都有一个日期字段,它是一个时间戳。

有很多数据,我只想获取其中的一部分,对于每个间隔:

例如400毫秒

1402093316030<----
1402093316123
1402093316223
1402093316400<----
1402093316520
1402093316630
1402093316824<----

是否有可能获得每隔一个或每隔三个结果?或者更好的是每 400 毫秒第一个文档?

最佳答案

您可以使用聚合框架和一点点日期数学来做到这一点。假设您有一个“时间戳”字段和附加字段“a”、“b”和“c”:

db.collection.aggregate([
{ "$group": {
"_id": {
"$subtract": [
"$timestamp",
{ "$mod": [ "$timestamp", 400 ] }
]
},
"timestamp": { "$first": "$timestamp" },
"a": { "$first": "$a" },
"b": { "$first": "$b" },
"c": { "$first": "$c" }
}}
])

因此,日期数学以 400 毫秒的间隔对“时间戳”字段的值进行“分组”。其余数据用 $first 标识运算符,它从在这些分组边界上找到的字段中选择“最后”值。

如果您以其他方式想要这些边界上的“最后一个”项目,那么您可以切换到使用 $last运算符代替。

最终结果是每 400 毫秒间隔出现的最后一个文档。

参见 aggregate命令和 Aggregation Framework operators以供引用。

关于MongoDB 获取每秒结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24137681/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com