我想使用会话集合的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));
我的问题是我应该只运行一次db.collection.createIndex() 当服务器启动时,还是我必须每次都运行该命令 插入新文档后?
不应在每次插入时都指定 TTL 索引。在日期类型或 BSON 日期类型对象数组上创建一个索引,该索引将应用于每个文档。此外,您还可以使用 collMod
命令修改现有 TTL 索引的expireAfterSeconds
。查看MongoDB文档以获得更详细的讨论。
创建 TTL 索引时,无需执行额外的操作。只需插入文档并等待终止即可。
如果您需要延长文档生存期,请相应地更新 ttl 索引字段。
如果文档不包含索引字段,则文档不会过期。