MongoDB - 固定大小集合



固定大小集合是固定大小的迴圈集合,它們遵循插入順序以支援高效能的建立、讀取和刪除操作。迴圈是指,當分配給集合的固定大小用盡時,它將開始刪除集合中最舊的文件,而無需任何顯式命令。

如果更新導致文件大小增加,則固定大小集合會限制對文件的更新。由於固定大小集合按磁碟儲存順序儲存文件,因此它確保文件大小不會增加磁碟上分配的大小。固定大小集合最適合儲存日誌資訊、快取資料或任何其他大量資料。

建立固定大小集合

要建立固定大小集合,我們使用正常的 createCollection 命令,但將 capped 選項設定為 true 並以位元組為單位指定集合的最大大小。

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

除了集合大小之外,我們還可以使用 max 引數限制集合中的文件數量:

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

如果要檢查集合是否為固定大小集合,請使用以下 isCapped 命令:

>db.cappedLogCollection.isCapped()

如果您想將現有集合轉換為固定大小集合,您可以使用以下程式碼:

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

此程式碼會將我們現有的集合 posts 轉換為固定大小集合。

查詢固定大小集合

預設情況下,對固定大小集合的 find 查詢將按插入順序顯示結果。但是,如果希望以相反的順序檢索文件,請使用以下程式碼所示的 sort 命令:

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

還有一些其他關於固定大小集合的重要點值得了解:

  • 我們無法從固定大小集合中刪除文件。

  • 固定大小集合中沒有預設索引,甚至 _id 欄位也沒有。

  • 插入新文件時,MongoDB 不需要實際查詢磁碟上容納新文件的位置。它可以盲目地將新文件插入到集合的尾部。這使得固定大小集合中的插入操作非常快。

  • 同樣,在讀取文件時,MongoDB 按與磁碟上相同的順序返回文件。這使得讀取操作非常快。

廣告