最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

把MongoDB作為循環(huán)隊(duì)列的方法詳解

 更新時(shí)間:2021年03月15日 09:45:47   作者:kingname  
這篇文章主要給大家介紹了關(guān)于把MongoDB作為循環(huán)隊(duì)列的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

我們?cè)谑褂肕ongoDB的時(shí)候,一個(gè)集合里面能放多少數(shù)據(jù),一般取決于硬盤大小,只要硬盤足夠大,那么我們可以無(wú)休止地往里面添加數(shù)據(jù)。

然后,有些時(shí)候,我只想把MongoDB作為一個(gè)循環(huán)隊(duì)列來(lái)使用,期望它有這樣一個(gè)行為:

  1. 設(shè)定隊(duì)列的長(zhǎng)度為10
  2. 插入第1條數(shù)據(jù),它被放在第1個(gè)位置
  3. 插入第2條數(shù)據(jù),它被放在第2個(gè)位置
  4. ...
  5. 插入第10條數(shù)據(jù),它被放在第10個(gè)位置
  6. 插入第11條數(shù)據(jù),它被放在第1個(gè)位置,覆蓋原來(lái)的內(nèi)容
  7. 插入第12條數(shù)據(jù),它被放在第2個(gè)位置,覆蓋原來(lái)的內(nèi)容
  8. ...

MongoDB有一種Collection叫做capped collection,就是為了實(shí)現(xiàn)這個(gè)目的而設(shè)計(jì)的。

普通的Collection不需要提前創(chuàng)建,只要往MongoDB里面插入數(shù)據(jù),MongoDB自動(dòng)就會(huì)創(chuàng)建。而capped collection需要提前定義一個(gè)集合為capped類型。

語(yǔ)法如下:

import pymongo

conn = pymongo.MongoClient()
db = conn.test_capped

db.create_collection('info', capped=True, size=1024 * 1024 * 10, max=5)

對(duì)一個(gè)數(shù)據(jù)庫(kù)對(duì)象使用create_collection方法,創(chuàng)建集合,其中參數(shù)capped=True說(shuō)明這是一個(gè)capped collection,并限定它的大小為10MB,這里的size參數(shù)的單位是byte,所以10MB就是1024 * 1024 * 10. max=5表示這個(gè)集合最多只有5條數(shù)據(jù),一旦超過(guò)5條,就會(huì)從頭開始覆蓋。

創(chuàng)建好以后,capped collection的插入操作和查詢操作就和普通的集合完全一樣了:

col = db.info
for i in range(5):
  data = {'index': i, 'name': 'test'}
  col.insert_one(data)

這里我插入了5條數(shù)據(jù),效果如下圖所示:

其中,index為0的這一條是最先插入的。

接下來(lái),我再插入一條數(shù)據(jù):

data = {'index': 100, 'name': 'xxx'}
col.insert_one(data)

此時(shí)數(shù)據(jù)庫(kù)如下圖所示:

可以看到,index為0的數(shù)據(jù)已經(jīng)被最新的數(shù)據(jù)覆蓋了。

我們?cè)俨迦胍粭l數(shù)據(jù)看看:

data = {'index': 999, 'name': 'xxx'}
col.insert_one(data)

運(yùn)行效果如下圖所示:

可以看到,index為1的數(shù)據(jù)也被覆蓋了。

這樣我們就實(shí)現(xiàn)了一個(gè)循環(huán)隊(duì)列。

MongoDB對(duì)capped collection有特別的優(yōu)化,所以它的讀寫速度比普通的集合快。

但是capped collection也有一些缺點(diǎn),在MongoDB的官方文檔中提到:

If an update or a replacement operation changes the document size, the operation will fail.

You cannot delete documents from a capped collection. To remove all documents from a collection, use the drop() method to drop the collection and recreate the capped collection.

意思就是說(shuō),capped collection里面的每一條記錄,可以更新,但是更新不能改變記錄的大小,否則更新就會(huì)失敗。

不能單獨(dú)刪除capped collection中任何一條記錄,只能整體刪除整個(gè)集合然后重建。

總結(jié)

到此這篇關(guān)于把MongoDB作為循環(huán)隊(duì)列的文章就介紹到這了,更多相關(guān)MongoDB作循環(huán)隊(duì)列內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Mongodb文檔和數(shù)組的通配符索引應(yīng)用小結(jié)

    Mongodb文檔和數(shù)組的通配符索引應(yīng)用小結(jié)

    Mongodb的通配符索引,為靈活可變的Mongodb數(shù)據(jù)結(jié)構(gòu)提供了高效的查詢方法,本文結(jié)合Mongodb官方文檔,詳細(xì)介紹在嵌入式文檔和數(shù)組上,通配符索引的結(jié)構(gòu),感興趣的朋友一起看看吧
    2024-07-07
  • mongoDB數(shù)據(jù)庫(kù)索引快速入門指南

    mongoDB數(shù)據(jù)庫(kù)索引快速入門指南

    索引是一種特殊的數(shù)據(jù)結(jié)構(gòu),存儲(chǔ)設(shè)置在一個(gè)易于遍歷形式的數(shù)據(jù)的一小部分。索引存儲(chǔ)一個(gè)特定的字段或一組字段的值,在索引中指定的值的字段排列的,對(duì)mongoDB索引相關(guān)知識(shí)感興趣的朋友跟隨小編一起學(xué)習(xí)下吧
    2022-03-03
  • 淺談mongodb中query查詢

    淺談mongodb中query查詢

    在MongoDB數(shù)據(jù)中,查詢有多種方法。比如find和or查詢等等。每種查詢方法也有不同的查詢條件供大家參考。
    2015-05-05
  • 阿里云服務(wù)器安裝mongodb的方法

    阿里云服務(wù)器安裝mongodb的方法

    這篇文章主要介紹了阿里云服務(wù)器安裝mongodb的方法,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2018-11-11
  • MongoDB 語(yǔ)法使用小結(jié)

    MongoDB 語(yǔ)法使用小結(jié)

    MongoDB是一個(gè)介于關(guān)系數(shù)據(jù)庫(kù)和非關(guān)系數(shù)據(jù)庫(kù)之間的產(chǎn)品,是非關(guān)系數(shù)據(jù)庫(kù)當(dāng)中功能最豐富,最像關(guān)系數(shù)據(jù)庫(kù)的
    2011-10-10
  • Windows下MongoDb簡(jiǎn)單配置教程

    Windows下MongoDb簡(jiǎn)單配置教程

    這篇文章主要為大家詳細(xì)介紹了Windows下MongoDb簡(jiǎn)單配置的教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-07-07
  • MongoDB創(chuàng)建與刪除數(shù)據(jù)庫(kù)

    MongoDB創(chuàng)建與刪除數(shù)據(jù)庫(kù)

    這篇文章介紹了MongoDB創(chuàng)建與刪除數(shù)據(jù)庫(kù)的方法,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • MongoDB備份和還原的操作指南

    MongoDB備份和還原的操作指南

    MongoDB備份和還原是指將MongoDB數(shù)據(jù)庫(kù)中的數(shù)據(jù)和集合備份到另一個(gè)存儲(chǔ)位置,并在需要的時(shí)候恢復(fù)這些備份的過(guò)程,備份和還原MongoDB數(shù)據(jù)庫(kù)非常重要,本文給大家介紹了MongoDB備份和還原的操作指南,需要的朋友可以參考下
    2024-05-05
  • 教你使用MongoDB導(dǎo)入導(dǎo)出備份數(shù)據(jù)

    教你使用MongoDB導(dǎo)入導(dǎo)出備份數(shù)據(jù)

    這篇文章主要介紹了教你使用MongoDB導(dǎo)入導(dǎo)出備份數(shù)據(jù)方法的相關(guān)資料,需要的朋友可以參考下
    2022-11-11
  • 關(guān)于對(duì)MongoDB索引的一些簡(jiǎn)單理解

    關(guān)于對(duì)MongoDB索引的一些簡(jiǎn)單理解

    索引的作用是為了提升查詢效率,如果查詢條件帶有索引,MongoDB 將掃描索引, 通過(guò)索引確定要查詢的部分文檔,而非直接對(duì)全部文檔進(jìn)行掃描,下面這篇文章主要給大家介紹了關(guān)于對(duì)MongoDB索引的一些簡(jiǎn)單理解,需要的朋友可以參考下
    2021-09-09

最新評(píng)論

灵寿县| 安吉县| 微山县| 罗源县| 中超| 株洲县| 区。| 信丰县| 浏阳市| 伽师县| 和平区| 涞源县| 辽宁省| 张家口市| 石阡县| 和田县| 泽库县| 东阿县| 乐清市| 鄂托克前旗| 鲁山县| 亳州市| 高邑县| 白银市| 连南| 伊通| 保山市| 宜川县| 绍兴县| 文化| 若尔盖县| 日照市| 中西区| 禹城市| 囊谦县| 武穴市| 烟台市| 玛多县| 江源县| 花垣县| 连江县|