特殊的索引和集合
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了特殊的索引和集合相关的知识,希望对你有一定的参考价值。
1.固定集合
特殊的索引和集合可自动增长可以容纳更多的数据,MongoDB中还有另一种不同类型的集合,叫做固定集合,固定集合需要事先创建好,而且它的大小是固定的。如果向已经满了的固定集合 中插入数据,最老的文档会被删除以释放空间,新插入的文档会占据这块空间。
创建名为test_coll1,大小为100000字节的固定集合
db.createCollection(test_coll1,capped:true,size:100000)
创建名为test_coll2,大小为100000字节,集合中大多可存100个文档
db.createCollection(test_coll2,capped:true,size:100000,max:100)
创建固定集合时还有另一个选项,可以将已有的某个常规集合转换为固定集合,可以使用convertToCapped命令实现,但是无法将固定集合转换成非固定集合(只能将其删除)
db.runCommand(convertToCapped:test1,size:10000)
2.TTL索引
TTL索引(time-to-live index,具有生命周期的索引),这种索引允许为每一个文档设置一个超时时间,一个文档到达预设置的老化程度之后就会被删除,这种类型的索引对于缓存问题非常有用,在ensureIndex中指定expireAfterSecs选项就可以创建一个TTL索引。
超时时间为24小时的文档删除
db.foo.createIndex(lastupdated:1,expireAfterSeconds:60*60*24)
例子1:
创建表并新增数据
db.test4.insert(name:zhao,age:13,createtime:new Date())
db.test4.createIndex(createtime:1,expireAfterSeconds:60) #超过1分钟删除
使用TTL时是有限制的:
1.如果要索引的字段已经在其他索引中使用,不能创建TTL索引
2.索引不能包含多个字段
3.如果定义的字段不存在,则永不过期
4.不能对capped集合创建TTL索引
以上是关于特殊的索引和集合的主要内容,如果未能解决你的问题,请参考以下文章