【发布时间】:2013-08-19 20:33:27
【问题描述】:
Meteor Collection 是否提供任何方式来使用 mongodb 的 TTL(生存时间)功能?需要这种用于具有临时数据的多用户会话。更改是否完全响应并不重要。
【问题讨论】:
-
我也想知道这个。我希望我的对象在一小时后从数据库中消失。
标签: meteor
Meteor Collection 是否提供任何方式来使用 mongodb 的 TTL(生存时间)功能?需要这种用于具有临时数据的多用户会话。更改是否完全响应并不重要。
【问题讨论】:
标签: meteor
这个答案的两个部分:
1) 要应用索引,您可以在 Meteor 中使用 _ensureIndex 方法,但是正如 _ 所暗示的,可以随时取消对此的支持。在可以传递的内容方面也可能存在限制,但对于像这样简单的事情
db.log.events.ensureIndex( { "status": 1 }, { expireAfterSeconds: 3600 } )
.. 然后是 mongo-livedata 的标准实现
self._collection._ensureIndex(index, options);
...应该足够了。
2) 我还没有测试过,但我很确定 TTL 会起作用。 (另一方面,我测试了上限集合并且它们确实有效)。你看,DDP 在获取数据变化方面做了两方面的工作:
第二部分意味着您可以手动进入您的 mongo shell,删除/添加/更新内容,更改将在不迟于 10 秒后反映。
在此基础上,如果您对 10 秒的反应延迟感到满意,那么 TTL 应该可以工作。
如果您对此不满意,可以尝试 Arunoda 的智能收藏,您可以在以下网址阅读更多信息:http://meteorhacks.com/introducing-smart-collections.html。他们从 oplog 中读取(如果你有的话),这样可能会减少反应延迟。请注意,这个概念虽然很有趣,但也有 David Glasser 在这篇文章中提到的局限性:https://groups.google.com/d/msg/meteor-talk/h-ulU7guh1Y/nTfJ1F8uGxwJ
无论如何,祝你好运,让我们知道你的进展。
【讨论】: