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});
注:非固定集合不能保证文档按照特定顺序存储,所以自然顺序的意义不大。