只收集n份文件 - Meteor

时间:2014-11-30 17:54:03

标签: mongodb meteor

我想在我的activityFeed集合中只保留最新的n个文档,以加快应用程序的速度。我知道我只能在我的铁路由器配置中订阅n个activityFeed元素,但没有必要保留所有条目。 我怎样才能做到这一点? 我是否需要检查每个插页,或者有更好的方法吗?

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

正如您所指出的,您的订阅可以在客户端处理此问题,但如果您还想清除数据库,则有两个明显的解决方案:

  1. 使用Collection hooks删除每个插页上最旧的项目。
  2. 使用cron作业每隔一段时间(15分钟或其他)找到第n个最旧的元素,然后删除比这更早的所有内容。我为此使用了synced-cron

答案 1 :(得分:0)

最好是创建“上限集合”:https://docs.mongodb.org/manual/core/capped-collections/

在流星中你可以像这样使用它:

bitcount

其中x是要存储在集合中的最大文档数,var coll = new Meteor.Collection("myCollection"); coll._createCappedCollection(numBytes, maxDocuments); 是集合的最大大小。如果达到其中一个限制,则自动mongo将从集合中删除最早插入的文档。

无需额外的脚本和cron作业。