Epehmeral集合

每次启动我的应用程序时,我都想清除几个集合。 问题是,因为我使用的是PaaS( http://modulus.io ),所以实例可以经常启动和停止。 如果我在启动时执行了clients.remove({}) ,则即使有一个实例死亡并重新启动,整个集合也将被清除。

什么是最好的方式有一个短暂的集合,只有当应用程序第一次启动时才被清除?

这不是MeteorModulusMongo特有的问题,但可以应用于此情况下的任何Node应用程序。

我怀疑你需要重构你的问题/目标。 如果您使用的是PaaS,而且您的应用程序是多程式的,而且是长期运行的服务,那么“每次启动我的应用程序”这个概念在很大程度上都是不相关的。 我想你会得到更好的答案,如果你描述你的实际function用例与你试图编码的策略。 也许定期工作更合适? 你是否可以让每个实例在启动时logging一个时间戳,并始终用{createdAt: {$lt: instanceStartTime}}过滤掉客户端?

否则,您将需要在数据库级别正确实现一个互斥体,以便为一个实例提供写入locking,以便实例可以转到clients.drop() ,然后释放该locking。 但要正确地编码,需要一个小心的状态机加上一些超时逻辑,以防一个实例在释放锁之前locking集合以便丢弃但崩溃。