MongoDB固定回圈集合


MongoDB固定集合(Capped collections)是固定大小的迴圈集合,遵循插入順序以支援建立,讀取和刪除操作的高效能。 通過迴圈,當分配給集合的固定大小被耗盡時,它將開始刪除集合中最舊的文件,而不用提供任何明確的命令。

如果更新導致增加的文件大小,固定集合會限制文件的更新。 由於上限集合按照磁碟儲存的順序儲存文件,因此可確保文件大小不會增加磁碟上分配的大小。固定集合最適用於儲存紀錄檔資訊,快取資料或任何其他高容量資料。

建立固定集合

要建立一個固定集合,可使用 createCollection 命令,但是capped選項的值為true,並指定以位元組為單位的最大集合大小。

>db.createCollection("cappedLogCollection",{capped:true,size:99999})

除了指定集合大小,還可以使用max引數限制集合中的文件數量 -

>db.createCollection("cappedLogCollection",{capped:true,size:99999,max:1000})

如果要檢視集合是否固定,請使用以下isCapped命令 -

>db.cappedLogCollection.isCapped()

如果想要將一個集合轉換為上限的集合,則可以使用以下程式碼進行操作:

>db.runCommand({"convertToCapped":"posts",size:99999})

此程式碼將現有的post轉換為固定集合。

查詢固定集合

預設情況下,在固定集合上查詢將以插入順序顯示結果。 但是,如果要以相反的順序檢索文件,請使用sort命令,如以下程式碼所示 -

> db.cappedLogCollection.find().sort({$natural:-1})

關於固定集合值得注意的幾個要點 -

  • 無法從固定集合中刪除文件。
  • 固定集合中沒有預設索引,甚至不在_id欄位上。
  • 在插入新文件時,MongoDB不需要在磁碟上實際尋找一個容納新文件的位置。它可以隨便地將新文件插入集合的尾部。這樣就使得在固定集合中的插入操作非常快。
  • 類似地,在讀取文件的同時,MongoDB按照磁碟上儲存的順序返回文件。這樣使讀取操作非常快。