新聞中心

專注于為中小企業(yè)提供成都網站制作、網站設計服務,電腦端+手機端+微信端的三站合一,更高效的管理,為中小企業(yè)樂都免費做網站提供優(yōu)質的服務。我們立足成都,凝聚了一批互聯(lián)網行業(yè)人才,有力地推動了超過千家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網站建設實現(xiàn)規(guī)模擴充和轉變。
如果更新導致文檔大小增加,則固定集合會限制對文檔的更新。由于固定集合是按磁盤存儲的順序存儲文檔的,因此可以確保文檔大小不會增加磁盤上分配的大小。固定集合最適合存儲日志信息、緩存數(shù)據(jù)或任何其他高容量數(shù)據(jù)。
創(chuàng)建固定集合
要創(chuàng)建一個具有固定大小的集合,我們可以使用常規(guī)的 createCollection 命令,但需要將 capped 選項設置為 true,并以字節(jié)為單位設置集合的大小。
> db.createCollection("bianchengbang", {capped:true, size:10000})
{ "ok" : 1 }
其中 bianchengbang 為要創(chuàng)建的集合名稱。除了集合的大小外,我們還可以使用 max 參數(shù)來限制集合中文檔的數(shù)量:
> db.createCollection("bianchengbang", {capped:true, size:10000, max:1000})
{ "ok" : 1 }
如果要檢查集合是否為固定集合,可以使用 isCapped 命令:
> db.bianchengbang.isCapped() true
如果您需要將已經存在的集合轉換為固定集合,可以使用如下命令:
> db.runCommand({"convertToCapped":"bianchengbang",size:10000})
{ "ok" : 1 }
上面的命令可以將我們已存在的集合“bianchengbang”轉換為固定集合。
固定集合查詢
固定集合中的文檔是按照插入順序儲存的,默認情況下查詢也是按照插入順序返回的,當然也可以使用 sort() 方法調整返回的順序。示例代碼如下:
> db.bianchengbang.find().sort({$natural:-1})
關于固定集合,有以下幾點需要注意:
- 可以在固定集合中插入或更新數(shù)據(jù),但更新時數(shù)據(jù)不能超出集合的大小,否則更新會失?。?/li>
- 不允許刪除固定集合中的文檔,但是可以使用 drop() 方法刪除集合中的所有數(shù)據(jù),在 drop 后需要顯式地重建集合;
- 固定集合中不存在默認索引,甚至在 _id 字段上也不存在;
- 在插入新文檔時,MongoDB 實際上不必在磁盤上尋找容納新文檔的位置,它可以在集合的尾部盲目地插入新文檔,這使得在固定集合中插入文檔非???;
- 在查詢文檔時,MongoDB 返回的文檔順序與文檔在磁盤上存儲的順序是相同的,這使得查詢文檔的速度非???。
標題名稱:MongoDB固定集合(CappedCollections)
本文來源:http://fisionsoft.com.cn/article/dhgegjd.html


咨詢
建站咨詢
