新聞中心

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


咨詢
建站咨詢
