【发布时间】:2013-05-17 07:46:44
【问题描述】:
我想为集合设置 ttl一次,在构建使用 mongoDB 的 java 应用程序时,实现此目的的惯用方法是什么? ppl 是否只是在 shell 中应用这些设置?或者在应用程序代码中检查集合是否已经在数据库中是正常的,如果没有,则使用所需的选项创建它?
谢谢!
【问题讨论】:
我想为集合设置 ttl一次,在构建使用 mongoDB 的 java 应用程序时,实现此目的的惯用方法是什么? ppl 是否只是在 shell 中应用这些设置?或者在应用程序代码中检查集合是否已经在数据库中是正常的,如果没有,则使用所需的选项创建它?
谢谢!
【问题讨论】:
我再也不会在我的应用程序代码中构建索引了。
我承认我曾经这样做过。每次我的应用程序启动时,我都会确保我的所有索引,直到有一天,一位初学者开发人员掌握了我的代码,并意外删除了我的一个索引序列中的一个字符。
因此,由于在前台处理此索引构建,整个集群冻结并停机。幸运的是,我有许多延迟和非索引构建从站需要修复,但我总共损失了大约 12 小时,进而损失了 12 小时的工作时间。
我建议您不要在应用程序代码中构建索引,而是在您的 mongo 控制台中仔细构建。这适用于任何这样的操作,甚至是 TTL 索引。
【讨论】:
您可以按照here 的文档为集合设置 TTL。
使用Java驱动,我会尝试:
theTTLCollection.ensureIndex(new BasicDBObject("status", 1), new BasicDBObject("expireAfterSeconds", 3600));
hth.
【讨论】:
设置TTL 是一个索引操作,所以我想每次代码运行时都这样做是不明智的。
【讨论】: