我什么时候应该在MongoDB中设置TTL索引?

时间:2016-05-27 12:17:12

标签: mongodb indexing ttl

我想为会话集合使用TTL索引。我的问题是,我应该在服务器启动时只运行db.collection.createIndex()一次,还是每次插入新文档后都必须运行命令?

对于后一种情况,代码如下:

DB.findOneAndUpdate(args)
    .then((result) => {
        DB.createIndex({
            'name': 'sessions',
            'keys': {'lastLogin': 1},
            'options': {expireAfterSeconds: req.session.cookie.maxAge}
        });
    })
    .catch((err) => console.log(err));

2 个答案:

答案 0 :(得分:2)

  

我的问题是我应该只运行一次db.collection.createIndex()   当服务器启动时,或者每次都必须运行命令   插入新文件后?

您不应在每个插入上指定TTL索引。在日期类型或BSON日期类型对象的数组上创建索引,该索引将应用于每个文档。此外,您可以使用expireAfterSeconds命令修改现有TTL索引的collMod。查看these lines以获取更详细的讨论。

答案 1 :(得分:2)

创建TTL索引时,不需要做额外的事情。 只需插入文档并等待终止。

如果您需要延长文档生命周期,则相应地更新ttl索引字段。

如果文档不包含索引字段,则文档不会过期。