MongoDB固定集合(Capped collections)是固定大小的循環(huán)集合,遵循插入順序以支持創(chuàng)建,讀取和刪除操作的高性能。 通過循環(huán),當分配給集合的固定大小被耗盡時,它將開始刪除集合中最舊的文檔,而不用提供任何明確的命令。
如果更新導致增加的文檔大小,固定集合會限制文檔的更新。 由于上限集合按照磁盤存儲的順序存儲文檔,因此可確保文檔大小不會增加磁盤上分配的大小。固定集合最適用于存儲日志信息,緩存數(shù)據(jù)或任何其他高容量數(shù)據(jù)。
要創(chuàng)建一個固定集合,可使用 createCollection 命令,但是capped選項的值為true,并指定以字節(jié)為單位的最大集合大小。
>db.createCollection("cappedLogCollection",{capped:true,size:99999})
除了指定集合大小,還可以使用max參數(shù)限制集合中的文檔數(shù)量 -
>db.createCollection("cappedLogCollection",{capped:true,size:99999,max:1000})
如果要查看集合是否固定,請使用以下isCapped命令 -
>db.cappedLogCollection.isCapped()
如果想要將一個集合轉換為上限的集合,則可以使用以下代碼進行操作:
>db.runCommand({"convertToCapped":"posts",size:99999})
此代碼將現(xiàn)有的post轉換為固定集合。
默認情況下,在固定集合上查詢將以插入順序顯示結果。 但是,如果要以相反的順序檢索文檔,請使用sort命令,如以下代碼所示 -
> db.cappedLogCollection.find().sort({$natural:-1})
關于固定集合值得注意的幾個要點 -
_id字段上。