日期:2014-05-16  浏览次数:20433 次

MongoDB 固定集合

1.定义

固定集合大小固定,必须事先创建,并且指定大小。

固定集合很像环形队列,如果空间不足,最早的文档就会被删除,为新的文档腾出空间,即自动淘汰最早的文档。

2.与普通集合的区别

1)不能删除文档

2)更新不能导致文档移动,即更新不能使得被更新的文档的存储空间变大

3)在默认情况下固定集合没有索引

3.特点

1)插入速度极快

2)按照插入顺序输出的查询速度极快

4.应用

1)日志

2)缓存少量的文档

3)任何想要自动淘汰过期属性的场景

5.创建

方法一:
db.createCollection("sys_log", {"capped": true, size: 100, max: 20});
sys_log: 集合名
capped: true,表示为固定集合
size: 集合字节大小
max: 文档数量的上限

方法二:
db.runCommand({"convertToCapped": "user", "size": 100});
convertToCapped: 要转化为固定集合的普通集合名
size: 集合字节大小

6.自然排序

自然顺序就是文档在磁盘上的顺序,即文档的插入顺序,自然排序就是与此相同的。

默认情况下,查询固定集合后就是按照插入顺序返回文档。即:

db.sys_log.find().sort({"$natural": 1});

也可以使用自然排序按照反向插入的顺序查询:

db.sys_log.find().sort({"$natural": -1});

注:非固定集合不能保证文档按照特定顺序存储,所以自然顺序的意义不大。