mongodb定时索引是什么?怎样使用?
Admin 2021-05-13 群英技术资讯 1047 次浏览
mongodb定时索引是什么?怎么使用?有些刚接触mongodb数据库的朋友,可能对于定时索引不是很熟悉,因此这篇文章小编就给大家介绍一下mongodb定时索引。
MongoDB中存在一种索引,叫做TTL索引(time-to-live index,具有生命周期的索引),这种索引允许为每一个文档设置一个超时时间。一个文档达到预设置的老化程度后就会被删除。
数据到期对于某些类型的信息非常有用,例如机器生成的事件数据,日志和会话信息,这些信息只需要在数据库中保存有限的时间。
在createIndex中指定expireAfterSeconds选项就可以创建一个TTL索引:
// 超时时间为24小时,默认是前台运行,可以通过background:true设置为后台模式
db.user_session.createIndex({"updated":1},{expireAfterSeconds:60*60*24});
这样在updated字段上创建了一个TTL索引。如果一个文档的updated字段存在并且它的值是日期类型,当服务器时间比文档的updated字段的时间晚expireAfterSeconds秒时,文档就会被删除。
db.getCollection('user_session').insert(
{
_id: NumberInt(1),
"updated":new Date(),
username:'lisi'
}
);
mongodb保存时间使用的UTC时间,在查询出来的结果的时候会转换为GMT时间,所以你看到保存的时间和电脑时间相差8个小时(GMT+8)
db.getCollection('user_session').find({updated:{$gt: new Date("2019-07-12 14:00:00")}}) 在查询的时候可以使用new Date()直接进行时间的比较,new Date传入的参数是GMT时间
为了防止活跃的会话被删除,可以在会话上有活动发生时将updated字段的值更新为当前时间。只要updated的时间距离当前时间达到24小时。相应的文档就会被删除。
MongoDB的TTL功能依赖于mongodb中的后台线程,该线程读取索引中的日期类型值并从集合中删除过期的文档。
MongoDB每分钟对TTL索引进行一次清理,所以不应该依赖以秒为单位的时间保证索引的存活状态。而且TTL索引不保证在到期时立即删除过期数据。文档到期的时间与MongoDB从数据库中删除文档的时间之间可能存在延迟。由于删除过期文档的后台任务每60秒运行一次。所以,文档可能在文档到期和后台任务运行之间的期间保留在集合中。
mongodb不支持使用createIndex来重新设置过期时间,只可以使用collMod命令修改expireAfterSeconds的值:
db.runCommand({collMod:"user_session",index: {name:"updated_1",expireAfterSeconds: 120}});
修改成功后,你会收到这样的消息(之前的过期时间是一分钟,现在修改为2分钟)
{
"expireAfterSeconds_old" : 60.0,
"expireAfterSeconds_new" : 120.0,
"ok" : 1.0
}
在一个给定的集合上可以有多个TTL索引,你可以在created和updated字段分别建立ttl索引,但是不能同时使用两个字段建立复合ttl索引,也不能在同一个字段上又是创建TTL索引,又是创建普通索引,但是可以像“普通索引”一样用来优化排序和查询。
总结
以上就是关于mongodb定时索引的定义,功能以及用法的介绍,文本示例具有一定的借鉴价值,有需要的朋友可以参考,希望文本对大家学习有帮助。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
我们在使用Mongodb数据库的时候需要为每个数据库都增加用户权限,那么你知道MongoDB怎么添加用户权限吗?
mongodb登录admin方法:1、登录admin但不启动授权,mongo默认不启动;2、用./mongo命令连接数据库;3、用use admin切换到admin数据库;4、然后创建用户,至此就完成了登录。
解决方法:1、在MongoDB目录下建立mongo.config文件,并在文件中添加dbpath与logpath的参数。2、然后在cmd执行mongod --config D:\MongoDB\mongo.config命令即可。
mongodb的数据库修改的方法:1、使用“use DATABASE_NAME”命令修改使用的数据库。2、使用update()方法修改数据库中的文件。
MongoDB 分片 分片 在Mongodb里面存在另一种集群,就是分片技术,可以满足MongoDB数据量大量增长的需求。 当MongoDB存储海量的数据时,一台机器可能不足以存储数据,也可能不足以提供可接受的读写吞吐量。这时,我们就可以通过在多台机器上分割数据,使得数据库系统能存储和处理更多的数据。 为什么使用分片 复制所有的写入操作到主节点 延迟的敏感数据会在主节点查询 单个副本集限制在12个节点 当请求量巨大时会出现内存不..
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008