MongoDB 固定集合

固定集合是固定大小的循環(huán)集合,遵循插入順序,以支持高性能的創(chuàng)建,讀取和刪除操作。循環(huán)表示這意味著當(dāng)分配給集合的固定大小用盡時(shí),它將開始刪除集合中最舊的文檔,而無(wú)需提供任何顯式命令。

如果更新導(dǎo)致文檔大小增加,則限制對(duì)文檔的更新。由于固定集合按磁盤存儲(chǔ)的順序存儲(chǔ)文檔,因此它可以確保文檔大小不會(huì)增加磁盤上分配的大小。固定集合最適合存儲(chǔ)日志信息、緩存數(shù)據(jù)或任何其他大容量數(shù)據(jù)。

創(chuàng)建固定集合

要?jiǎng)?chuàng)建一個(gè)有上限的集合,我們使用普通的createCollection命令,但將capped選項(xiàng)設(shè)置為,true并指定集合的最大大?。ㄒ宰止?jié)為單位)。

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

除了集合大小,我們還可以使用max參數(shù)-限制集合中的文檔數(shù)-

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

如果要檢查集合是否受限制,請(qǐng)使用以下isCapped命令-

>db.cappedLogCollection.isCapped()

如果有計(jì)劃將其轉(zhuǎn)換為上限的現(xiàn)有集合,則可以使用以下代碼進(jìn)行處理-

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

此代碼會(huì)將我們現(xiàn)有的收藏轉(zhuǎn)換posts為有上限的集合。

查詢上限集合

默認(rèn)情況下,在上限集合上的查找查詢將按插入順序顯示結(jié)果。但是,如果您希望以相反的順序檢索文檔,請(qǐng)使用sort以下代碼中所示的命令-

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

關(guān)于封頂?shù)氖詹丶?,還有一些其他重要要點(diǎn)-

  • 我們無(wú)法從上限集合中刪除文檔。

  • 在上限集合中沒有默認(rèn)索引,即使在_id字段上也沒有。

  • 插入新文檔時(shí),MongoDB不必實(shí)際在磁盤上尋找容納新文檔的位置。它可以將新文檔盲目插入到集合的末尾。這使得加蓋集合中的插入操作非??臁?/p>

  • 同樣,在讀取文檔時(shí),MongoDB會(huì)以與磁盤上相同的順序返回文檔。這使得讀取操作非???。

丰满人妻一级特黄a大片,午夜无码免费福利一级,欧美亚洲精品在线,国产婷婷成人久久Av免费高清