Capper集合是固定大小的集合,有很高的性能及過期特性:即創建時要預先指定大小,如果空間用完,新的對象將會取代集合中最舊的對象
一. 特性:
用find查詢返回插入順序,用find().sort($natural:-1)返回倒序
二. 使用約束:
可以添加,但不能對Capped Collection中的數據進行刪除,但可以使用drop方法刪除collection中的所有行,刪除之後需要重新創建這個Collection
三. 創建Capped Collection
db.createCollection(" mycappedcoll ", { "capped":true, "size" : 100000 })
//指定size空間大小,返回{"ok" : 1}成功創建
四. 限制Capped Collection中對象的個數
db.createCollection(" mycappedcoll ", { "capped":true, "size" : 100000 , " max " : 100})
//限定個數爲100
查詢存儲空間:
db.mycappedcoll.validate( )
//存儲最近對象的版本號方法就是把max = 1
默認情況下Capped Collection不會創建_id索引,需要用到autoIndexId
db.createCollection(" mycappedcoll ", { "capped":true, "size" : 100000 ,"autoIndexId" : true})
五. 注意事項:
① 當寫比讀多時,建議不要在Capped Collection上創建索引,會降低速度
② 沒有指定順序,返回結果就是按照插入順序排序,使用nature ordering可以有效檢索最近插入的元素
③ createCollection還可以創建一般的集合,有參數autoIndexID決定是否需要在_id字段上創建索引
④Capped集合大小固定,經常被刷新,所以不能被Shard