3

Meteor Collection 是否提供任何方法来使用 mongodb 的TTL(生存时间)功能?需要这种用于具有临时数据的多用户会话。更改是否完全被动并不重要。

4

1 回答 1

0

这个答案的两个部分:

1) 要应用索引,您可以在 Meteor 中使用 _ensureIndex 方法,但是正如 _ 建议的那样,可以随时取消对此的支持。在可以传递的内容方面也可能存在限制,但对于像这样简单的事情

db.log.events.ensureIndex( { "status": 1 }, { expireAfterSeconds: 3600 } )

..然后是mongo-livedata的标准实现

self._collection._ensureIndex(index, options);

...应该足够了。

2)我还没有测试过,但我很确定 TTL 会起作用。(另一方面,我测试了上限集合并且它们确实有效)。你看,DDP 在获取数据更改方面所做的有两个方面:

  • 它在它知道流星驱动的每个写操作之后轮询 mongo
  • 无论如何,它每 10 秒轮询一次 mongo(用于带外更新)

那第二部分意味着您可以手动进入您的 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

无论如何,祝你好运,让我们知道你的进展如何。

于 2013-08-19T06:55:11.697 回答