【问题标题】:Time to live with Meteor.Collection是时候与 Meteor.Collection 一起生活了
【发布时间】:2013-08-19 20:33:27
【问题描述】:

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

【问题讨论】:

  • 我也想知道这个。我希望我的对象在一小时后从数据库中消失。

标签: meteor


【解决方案1】:

这个答案的两个部分:

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

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

【讨论】:

    猜你喜欢
    • 2014-04-03
    • 1970-01-01
    • 1970-01-01
    • 2014-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-24
    相关资源
    最近更新 更多