特殊的索引和集合

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分钟删除

特殊的索引和集合(八)_数据_02

使用TTL时是有限制的:

1.如果要索引的字段已经在其他索引中使用,不能创建TTL索引
2.索引不能包含多个字段
3.如果定义的字段不存在,则永不过期
4.不能对capped集合创建TTL索引

以上是关于特殊的索引和集合的主要内容,如果未能解决你的问题,请参考以下文章

[权威指南]学习笔记——第6章 特殊的索引和集合

特殊的索引与集合

10月16日--ArrayList集合特殊集合

C#004.索引器事件结构集合委托

C#004.索引器事件结构集合委托

ArrayList集合&特殊集合