位置:首頁 > 數據庫 > MongoDB教學 > MongoDB上限集合

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})

此代碼將轉換現有集合帖子到上限集合。

查詢上限集合:

默認情況下,在上限集合查找查詢將顯示在插入順序的結果。但是,如果想檢索順序相反的文件,使用如下麵的代碼 sort 命令:

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

有關於上限集合值得了解的其他幾個要點:

  • 我們不能刪除上限集合文檔
  • 還有冇有默認索引在上限集合,甚至冇有_id字段
  • 同時插入一個新的文檔,MongoDB並冇有實際查找一個地方,以適應在磁盤上新的文檔。 它可以盲目在集合的尾部插入新的文檔。這使得在上限集合插入操作速度非常快。
  • 同樣,雖然讀文件MongoDB剛剛返回相同的順序文件在於磁盤上。這使得讀取操作速度非常快。