MongoDB的固定集合

來源:互聯網
上載者:User

標籤:ima   strong   create   集合   成功   添加   insert   cap   結合   

  一、MongoDB固定集合概念

    固定集合指的是事先建立,並且大小固定的集合。即假設一個集合設定了固定大小為100,再添加一條文檔的時候,會把最前面的文檔剔除,永遠只保留100條資料。

    固定集合特性:固定集合很像環形隊列,如果空間不足,最早的文檔就會被刪除,為新的文檔騰出空間。一般來說,固定集合適用於任何想要自動淘汰到期屬性的情境。

  二、固定集合應用情境

    比如記錄檔,聊天記錄,通話資訊記錄等只需保留最近某段時間內的應用情境,都會使用到MongoDB的固定集合。

  三、如何使用固定集合

    建立固定集合使用命令:db.createCollection("集合名詞",{capped:true,size:1000,max:100}); 

    capped:true表示該集合為固定集合,size指定集合大小,單位為KB,max指定文檔的數量

    當指定文檔數量上限時,必須同時指定大小。這是為什麼呢?

    答案是:淘汰機制只有在容量還沒有滿時才會依據文檔數量來工作。要是容量滿了,淘汰機制會依據容量來工作。 

    結合情境來理解:

    (1)現建立一個c5的固定集合,大小設定為1000kb,文檔數量設定為100,編寫命令:db.createCollection("c5",{capped:true,size:1000,max:100}); 

    (2)並向集合中插入10條資料:    

        for(var i=0,i<=99;i++){
             db.c5.insert({name:"fuck",age:i})
        }

    (3)尋找c5集合的大小:db.c5.count(),卻發現實際顯示的數量只有56條。

     結論:當儲存的資料達到集合大小的上限時,淘汰機制依據容量來工作,通過不斷的淘汰前面插入的資料,來滿足後面所有資料的插入,所以根據可得,c5檢索出來的結果,是從age:43開始的。

    

    再來看一個情境   

    (1)現建立一個c8的固定集合,大小設定為10000kb,文檔數量設定為100,編寫命令:db.createCollection("c8",{capped:true,size:10000,max:100});,條件與上個情境差不多,只是大小調整為10000kb

    (2)並向集合中插入100條資料:    

        for(var i=0,i<100;i++){
             db.c8.insert({name:"fuck",age:i})
        }

    (3)再尋找c8集合的大小:db.c8.count(),這回的數量達到了預期的100條    

    (4)這時再插入一條資料,也能插入成功,但是再find一把,會發現第一條資料被幹掉了

     結論:淘汰機制在容量未滿的情況下,會對前面的文檔進行淘汰,後面插入多少條資料,則最前面相應的淘汰多少條。

     

 

MongoDB的固定集合

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.