亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

MongoDB快速翻頁(yè)的方法

 更新時(shí)間:2016年05月25日 10:39:46   作者:孫思s  
這篇文章主要為大家詳細(xì)介紹了MongoDB快速翻頁(yè)的方法,通過(guò)實(shí)例學(xué)習(xí)在MongoDB中翻閱數(shù)據(jù)的不同方式,感興趣的小伙伴們可以參考一下

翻閱數(shù)據(jù)是MongoDB最常見(jiàn)的操作之一。一個(gè)典型的場(chǎng)景是需要在你的用戶(hù)界面中顯示你的結(jié)果。如果你是批量處理的數(shù)據(jù),同樣重要的是要讓你的分頁(yè)策略正確,以便你的數(shù)據(jù)處理可以規(guī)?;?。

接下來(lái),讓我們通過(guò)一個(gè)例子來(lái)看在MongoDB中翻閱數(shù)據(jù)的不同方式。在這個(gè)例子中,我們有一個(gè)CRM數(shù)據(jù)庫(kù)的用戶(hù)數(shù)據(jù),我們需要通過(guò)翻閱瀏覽和在同一時(shí)間顯示10個(gè)用戶(hù)。所以實(shí)際上,我們的頁(yè)面大小是10。下方是我們的用戶(hù)文檔的結(jié)構(gòu):

{

  _id,

  name,

  company,

  state

}

方法一:Using skip() 和 limit()

MongoDB本身支持分頁(yè)操作使用 skip() 和 limit() 指令。skip(n)指令告訴MongoDB,它應(yīng)該跳過(guò)“n”結(jié)果和limit(n)指令指示MongoDB,它應(yīng)該限制結(jié)果長(zhǎng)度為“n”結(jié)果。通常情況下,你將使用 skip() 和 limit() 指令,但為了說(shuō)明情況,我們提供了控制臺(tái)命令,這樣也能達(dá)到相同的結(jié)果。同時(shí),為了代碼比較簡(jiǎn)潔,限制檢查代碼被排除在外。

//Page 1

db.users.find().limit (10)

//Page 2

db.users.find().skip(10).limit(10)

//Page 3

db.users.find().skip(20).limit(10)

........

一般來(lái)說(shuō),檢索頁(yè)面n,代碼是這樣的:

db.users.find().skip(pagesize*(n-1)).limit(pagesize)
然而,隨著數(shù)據(jù)的大小增加,這種方法出現(xiàn)嚴(yán)重的性能問(wèn)題。其原因是在每次執(zhí)行查詢(xún)時(shí),建立了完整的結(jié)果集,那么服務(wù)器必須從收集的開(kāi)始走到指定的偏移量。當(dāng)偏移量增加時(shí),這一過(guò)程會(huì)變得越來(lái)越慢。同時(shí),這個(gè)過(guò)程沒(méi)有有效地使用索引。所以,當(dāng)你有較小的數(shù)據(jù)集時(shí),典型的“skip() ”和“ limit() ”的方法是有用的。如果您正在使用大數(shù)據(jù)集,您需要考慮其他方法。

方法二:Using find() 和limit()

以前的方法不能很好擴(kuò)展其原因是skip() 命令。因此,本節(jié)的目標(biāo)是實(shí)現(xiàn)分頁(yè)不使用skip()命令。為此,我們將利用在存儲(chǔ)數(shù)據(jù)中的自然順序,比如時(shí)間戳或文檔中存儲(chǔ)的標(biāo)識(shí)。

在這個(gè)例子中,我們將使用“_id”存儲(chǔ)每個(gè)文檔?!癬id”是一個(gè)MongoDB 的ObjectID結(jié)構(gòu),即 12 字節(jié)結(jié)構(gòu)包含了時(shí)間戳、機(jī)械加工、進(jìn)程標(biāo)識(shí)符、計(jì)數(shù)器等??傮w思路如下 :

檢索當(dāng)前頁(yè)中的最后一個(gè)文檔 _id
在下一個(gè)頁(yè)面檢索文件大于此”_id”

//Page 1

db.users.find().limit(pageSize);

//Find the id of the last document in this page

last_id = ...

//Page 2

users = db.users.find({'_id'> last_id}). limit(10);

//Update the last id with the id of the last document in this page

last_id = ...

這種方法利用內(nèi)在的規(guī)則存在_id字段。也因?yàn)椤癬id”字段是默認(rèn)的查找操作,它是非常好的性能指標(biāo)。如果你使用的字段沒(méi)有被索引,那么你在操作中會(huì)受到困擾,所以確保字段被索引是非常重要的。

同樣,如果你希望數(shù)據(jù)按照特定順序進(jìn)行排序分頁(yè)的話,那么你還可以使用sort()條款與上述技術(shù)。重要的是要確保排序過(guò)程是利用索引來(lái)獲得最佳性能。您可以使用.explain()后綴來(lái)查詢(xún)。

users = db.users.find({'_id'> last_id}). sort(..).limit(10);

//Update the last id with the id of the last document in this page

last_id = ...

以上就是MongoDB快速翻頁(yè)的方法,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • MongoDB入門(mén)教程之主從復(fù)制配置詳解

    MongoDB入門(mén)教程之主從復(fù)制配置詳解

    這篇文章主要介紹了MongoDB入門(mén)教程之主從復(fù)制配置詳解,本文環(huán)境是windows+MongoDB,操作部分使用圖片來(lái)講解,需要的朋友可以參考下
    2014-08-08
  • 利用MongoDB中oplog機(jī)制實(shí)現(xiàn)準(zhǔn)實(shí)時(shí)數(shù)據(jù)的操作監(jiān)控

    利用MongoDB中oplog機(jī)制實(shí)現(xiàn)準(zhǔn)實(shí)時(shí)數(shù)據(jù)的操作監(jiān)控

    MongoDB 的Replication是通過(guò)一個(gè)日志來(lái)存儲(chǔ)寫(xiě)操作的,這個(gè)日志就叫做oplog,而下面這篇文章主要給大家介紹了利用MongoDB中oplog機(jī)制實(shí)現(xiàn)準(zhǔn)實(shí)時(shí)數(shù)據(jù)的操作監(jiān)控的相關(guān)資料,需要的朋友可以參考借鑒,下面來(lái)一起看看吧。
    2017-05-05
  • MongoDB排序時(shí)內(nèi)存大小限制與創(chuàng)建索引的注意事項(xiàng)詳解

    MongoDB排序時(shí)內(nèi)存大小限制與創(chuàng)建索引的注意事項(xiàng)詳解

    在數(shù)據(jù)量超大的情形下,任何數(shù)據(jù)庫(kù)系統(tǒng)在創(chuàng)建索引時(shí)都是一個(gè)耗時(shí)的大工程,下面這篇文章主要給大家介紹了關(guān)于MongoDB排序時(shí)內(nèi)存大小限制與創(chuàng)建索引的注意事項(xiàng)的相關(guān)資料,需要的朋友可以參考下
    2022-05-05
  • Linux系統(tǒng)下安裝MongoDB的詳細(xì)方法圖文教程

    Linux系統(tǒng)下安裝MongoDB的詳細(xì)方法圖文教程

    這篇文章主要介紹了Linux系統(tǒng)下安裝MongoDB的詳細(xì)方法圖文教程,需要的朋友可以參考下
    2023-06-06
  • MongoDB存儲(chǔ)時(shí)間時(shí)差問(wèn)題的解決方法

    MongoDB存儲(chǔ)時(shí)間時(shí)差問(wèn)題的解決方法

    這篇文章主要給大家介紹了關(guān)于MongoDB存儲(chǔ)時(shí)間時(shí)差問(wèn)題的解決方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用mongodb具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2018-09-09
  • MongoDB??數(shù)據(jù)模型的設(shè)計(jì)模式及優(yōu)缺點(diǎn)

    MongoDB??數(shù)據(jù)模型的設(shè)計(jì)模式及優(yōu)缺點(diǎn)

    這篇文章主要介紹了MongoDB??數(shù)據(jù)模型的設(shè)計(jì)模式,在實(shí)際開(kāi)發(fā)中,大多數(shù)性能問(wèn)題都可以追溯到糟糕的模型設(shè)計(jì),官方也提供分享過(guò)文檔模型設(shè)計(jì)的進(jìn)階技巧,這里簡(jiǎn)單翻譯記錄一下,需要的朋友可以參考下
    2022-12-12
  • MongoDB數(shù)據(jù)庫(kù)中索引(index)詳解

    MongoDB數(shù)據(jù)庫(kù)中索引(index)詳解

    本文給大家詳細(xì)介紹了MongoDB數(shù)據(jù)庫(kù)中的索引的知識(shí),優(yōu)缺點(diǎn)以及使用技巧等方面,非常細(xì)致,有需要的小伙伴可以參考下
    2016-11-11
  • Ubuntu中安裝MongoDB及執(zhí)行一些簡(jiǎn)單操作筆記

    Ubuntu中安裝MongoDB及執(zhí)行一些簡(jiǎn)單操作筆記

    這篇文章主要介紹了Ubuntu中安裝MongoDB及執(zhí)行一些簡(jiǎn)單操作筆記,本文同時(shí)給出了查看已有數(shù)據(jù)庫(kù)、刪除數(shù)據(jù)庫(kù)、創(chuàng)建數(shù)據(jù)庫(kù)等操作命令實(shí)例,需要的朋友可以參考下
    2014-09-09
  • MongoDB如何查詢(xún)耗時(shí)記錄的方法詳解

    MongoDB如何查詢(xún)耗時(shí)記錄的方法詳解

    查詢(xún)操作是我們?nèi)粘2僮鲾?shù)據(jù)庫(kù)經(jīng)常會(huì)遇到的一個(gè)功能,下面這篇文章主要給大家介紹了關(guān)于MongoDB如何查詢(xún)耗時(shí)記錄的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面來(lái)一起看看吧。
    2017-09-09
  • 使用zabbix監(jiān)控mongodb的方法

    使用zabbix監(jiān)控mongodb的方法

    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ù)的。通過(guò)本文給大家介紹使用zabbix監(jiān)控mongodb的方法,需要的朋友參考下
    2016-02-02

最新評(píng)論