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剛剛返回相同的順序文件在於磁盤上。這使得讀取操作速度非常快。