【发布时间】:2019-11-09 14:27:44
【问题描述】:
我有通过 MQTT 将压力数据读入 MongoDB 的 IoT 设备。
问题是,随着时间的推移绘制这些数据需要大量资源,而且还浪费存储空间。因此,我想使保存的数据逐渐被删除。我想将 1/1 保留一个小时,1/4 保留一天,1/4 再保留一周,然后永远保留 1/4。我最初的想法是在发布数据时使用某种模数,设置正确的时间限制。
我试过查看 MongoDB TTL 函数,但在我看来,它为整个集合设置了一个计时器,我唯一的选择是哪些特定文档会受到它的影响。
我有 Java 中间件为我将数据发布到 MongoDB,让 Java 程序来做这些事情会更好吗?我仍然不确定如何删除每个 n 条目。
【问题讨论】:
-
您可能应该删除
aggregation-framework标签,因为它不属于该主题,它可能会错误地影响搜索。 -
@Plancke 我认为聚合框架可能是创建属于一起的文档 ID 桶的好方法,随着时间的推移,越来越多的 ID 会被丢弃
-
@DanielF 很公平,我想他们可以使用 $sample 阶段从特定时间范围内选择随机文档。
-
@Plancke 好吧,我忘了在我的问题中提到它,但我确实考虑过使用 $match 来查找东西。然后我在那个函数中使用对象时遇到了麻烦,比如 new Date(Date.now()),我有点放弃了。但我也在寻找使用聚合框架的想法。
标签: mongodb aggregation-framework