<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          一網(wǎng)打盡大廠MongoDB面試題

          共 10729字,需瀏覽 22分鐘

           ·

          2021-08-10 11:52

          關注「開源Linux」,選擇“設為星標”
          回復「學習」,有我為您特別篩選的學習資料~


          1、MongoDB是什么?

          MongoDB是由C++語言編寫的,是一個基于分布式文件存儲的開源數(shù)據(jù)庫系統(tǒng)。在高負載的情況下,添加更多的節(jié)點,可以保證服務器性能。MongoDB旨在給Web應用提供可擴展的高性能數(shù)據(jù)存儲解決方案。

          MongoDB將數(shù)據(jù)存儲為一個文檔,數(shù)據(jù)結(jié)構(gòu)由鍵值(key=>value)對組成。MongoDB文檔類似于JSON對象。字段值可以包含其他文檔,數(shù)組及文檔數(shù)組。


          2、MongoDB有哪些特點?

          • MongoDB是一個面向文檔存儲的數(shù)據(jù)庫,操作起來比較簡單和容易。

          • 你可以在MongoDB記錄中設置任何屬性的索引(如:FirstName="Sameer",Address="8 Gandhi Road")來實現(xiàn)更快的排序。

          • 你可以通過本地或者網(wǎng)絡創(chuàng)建數(shù)據(jù)鏡像,這使得MongoDB有更強的擴展性。

          • 如果負載的增加(需要更多的存儲空間和更強的處理能力),它可以分布在計算機網(wǎng)絡中的其他節(jié)點上這就是所謂的分片。

          • MongoDB支持豐富的查詢表達式。查詢指令使用JSON形式的標記,可輕易查詢文檔中內(nèi)嵌的對象及數(shù)組。

          • MongoDB使用update()命令可以實現(xiàn)替換完成的文檔(數(shù)據(jù))或者一些指定的數(shù)據(jù)字段。

          • MongoDB中的Map/Reduce主要是用來對數(shù)據(jù)進行批量處理和聚合操作。

          • Map和Reduce。Map函數(shù)調(diào)用emit(key,value)遍歷集合中所有的記錄,將key與value傳給Reduce函數(shù)進行處理。

          • Map函數(shù)和Reduce函數(shù)是使用Javascript編寫的,并可以通過db.runCommand或mapreduce命令來執(zhí)行MapReduce操作。

          • GridFS是MongoDB中的一個內(nèi)置功能,可以用于存放大量小文件。

          • MongoDB允許在服務端執(zhí)行腳本,可以用JavaScript編寫某個函數(shù),直接在服務端執(zhí)行,也可以把函數(shù)的定義存儲在服務端,下次直接調(diào)用即可。


          3、你說的NoSQL數(shù)據(jù)庫是什么意思?NoSQL與RDBMS直接有什么區(qū)別?為什么要使用和不使用NoSQL數(shù)據(jù)庫?說一說NoSQL數(shù)據(jù)庫的幾個優(yōu)點?

          NoSQL是非關系型數(shù)據(jù)庫,NoSQL = Not Only SQL。

          關系型數(shù)據(jù)庫采用的結(jié)構(gòu)化的數(shù)據(jù),NoSQL采用的是鍵值對的方式存儲數(shù)據(jù)。

          在處理非結(jié)構(gòu)化/半結(jié)構(gòu)化的大數(shù)據(jù)時,在水平方向上進行擴展時,隨時應對動態(tài)增加的數(shù)據(jù)項時可以優(yōu)先考慮使用NoSQL數(shù)據(jù)庫。

          再考慮數(shù)據(jù)庫的成熟度,支持,分析和商業(yè)智能,管理及專業(yè)性等問題時,應優(yōu)先考慮關系型數(shù)據(jù)庫。

          4、NoSQL數(shù)據(jù)庫有哪些類型?

          NoSQL數(shù)據(jù)庫的類型例如:MongoDB、Cassandra、CouchDB、Hypertable、Redis、Riak、HBASE、Memcache等.

          5、MySQL與MongoDB之間最基本的差別是什么?

          MySQL和MongoDB兩者都是免費開源的數(shù)據(jù)庫。MySQL和MongoDB有許多基本差別包括數(shù)據(jù)的表示(data representation),查詢,關系,事務,schema的設計和定義,標準化(normalization),速度和性能。

          通過比較MySQL和MongoDB,實際上我們是在比較關系型和非關系型數(shù)據(jù)庫,即數(shù)據(jù)存儲結(jié)構(gòu)不同。

          6、你怎么比較MongoDB、CouchDB及CouchBase?

          MongoDB和CouchDB都是面向文檔的數(shù)據(jù)庫。MongoDB和CouchDB都是開源NoSQL數(shù)據(jù)庫的最典型代表。除了都以文檔形式存儲外它們沒有其他的共同點。MongoDB和CouchDB在數(shù)據(jù)模型實現(xiàn)、接口、對象存儲以及復制方法等方面有很多不同。

          7、MongoDB成為最好NoSQL數(shù)據(jù)庫的原因是什么?

          以下特點使得MongoDB成為最好的NoSQL數(shù)據(jù)庫:

          • 面向文件的

          • 高性能

          • 高可用性

          • 易擴展性

          • 豐富的查詢語言


          8、journal回放在條目(entry)不完整時(比如恰巧有一個中途故障了)會遇到問題嗎?

          每個journal(group)的寫操作都是一致的,除非它是完整的否則在恢復過程中它不會回放。

          9、分析器在MongoDB中的作用是什么?

          MongoDB中包括了一個可以顯示數(shù)據(jù)庫中每個操作性能特點的數(shù)據(jù)庫分析器。通過這個分析器你可以找到比預期慢的查詢(或?qū)懖僮鳎焕眠@一信息,比如,可以確定是否需要添加索引。

          10、namespace是什么?

          MongoDB存儲BSON對象在叢集(collection)中。數(shù)據(jù)庫名字和叢集名字以句點連接起來叫做namespace。

          11、如果用戶移除對象的屬性,該屬性是否從存儲層中刪除?

          是的,用戶移除屬性然后對象會重新保存(re-save())。

          12、能否使用日志特征進行安全備份?

          是的。

          13、允許空值null嗎?

          對于對象成員而言,是的。然而用戶不能夠添加空值(null)到數(shù)據(jù)庫叢集(collection)因為空值不是對象,然而用戶能夠添加空對象{}。

          14、更新操作立刻fsync到磁盤?

          不會,磁盤寫操作默認是延遲執(zhí)行的。寫操作可能在兩三秒(默認在60秒內(nèi))后到達磁盤。例如,如果一秒內(nèi)數(shù)據(jù)庫收到一千個對一個對象遞增的操作,僅刷新磁盤一次。(注意,盡管fsync選項在命令行和經(jīng)過getLastError_old是有效的)

          15、如何執(zhí)行事務/加鎖?

          MongoDB沒有使用傳統(tǒng)的鎖或者復雜的帶回滾的事務,因為它設計的宗旨是輕量,快速以及可預計的高性能??梢园阉惐瘸蒑ySQL MylSAM的自動提交模式。通過精簡對事務的支持,性能得到了提升,特別是在一個可能會穿過多個服務器的系統(tǒng)里。

          16、為什么我的數(shù)據(jù)文件如此龐大?

          MongoDB會積極的預分配預留空間來防止文件系統(tǒng)碎片。

          17、啟用備份故障恢復需要多久?

          從備份數(shù)據(jù)庫聲明主數(shù)據(jù)庫宕機到選出一個備份數(shù)據(jù)庫作為新的主數(shù)據(jù)庫將花費10到30秒時間。這期間在主數(shù)據(jù)庫上的操作將會失敗——包括寫入和強一致性讀?。╯trong consistent read)操作。然而,你還能在第二數(shù)據(jù)庫上執(zhí)行最終一致性查詢(eventually consistent query)(在slaveOk模式下),即使在這段時間里。

          18、什么是master或primary?

          它是當前備份集群(replica set)中負責處理所有寫入操作的主要節(jié)點/成員。在一個備份集群中,當失效備援(failover)事件發(fā)生時,一個另外的成員會變成primary。

          19、什么是secondary或slave?

          Seconday從當前的primary上復制相應的操作。它是通過跟蹤復制oplog(local.oplog.rs)做到的。

          20、我必須調(diào)用getLastError來確保寫操作生效了么?

          不用。不管你有沒有調(diào)用getLastError(又叫Safe Mode)服務器做的操作都一樣。調(diào)用getLastError只是為了確認寫操作成功提交了。當然,你經(jīng)常想得到確認,但是寫操作的安全性和是否生效不是由這個決定的。

          21、我應該啟動一個集群分片(sharded)還是一個非集群分片的MongoDB環(huán)境?

          為開發(fā)便捷起見,我們建議以非集群分片(unsharded)方式開始一個MongoDB環(huán)境,除非一臺服務器不足以存放你的初始數(shù)據(jù)集。從非集群分片升級到集群分片(sharding)是無縫的,所以在你的數(shù)據(jù)集還不是很大的時候沒必要考慮集群分片(sharding)。

          22、分片(sharding)和復制(replication)是怎樣工作的?

          每一個分片(shard)是一個分區(qū)數(shù)據(jù)的邏輯集合。分片可能由單一服務器或者集群組成,我們推薦為每一個分片(shard)使用集群。

          23、數(shù)據(jù)在什么時候才會擴展到多個分片(shard)里?

          MongoDB分片是基于區(qū)域(range)的。所以一個集合(collection)中的所有的對象都被存放到一個塊(chunk)中。只有當存在多余一個塊的時候,才會有多個分片獲取數(shù)據(jù)的選項?,F(xiàn)在,每個默認塊的大小是64Mb,所以你需要至少64Mb空間才可以實施一個遷移。

          24、當我試圖更新一個正在被遷移的塊(chunk)上的文檔時會發(fā)生什么?

          更新操作會立即發(fā)生在舊的分片(shard)上,然后更改才會在所有權(quán)轉(zhuǎn)移(ownership transfers)前復制到新的分片上。

          25、如果在一個分片(shard)停止或者很慢的時候,我發(fā)起一個查詢會怎樣?

          如果一個分片(shard)停止了,除非查詢設置了“Partial”選項,否則查詢會返回一個錯誤。如果一個分片(shard)響應很慢,MongoDB則會等待它的響應。

          26、我可以把moveChunk目錄里的舊文件刪除嗎?

          沒問題,這些文件是在分片(shard)進行均衡操作(balancing)的時候產(chǎn)生的臨時文件。一旦這些操作已經(jīng)完成,相關的臨時文件也應該被刪除掉。但目前清理工作是需要手動的,所以請小心地考慮再釋放這些文件的空間。

          27、我怎么查看MongoDB正在使用的鏈接?

          db._adminCommand("connPoolStats");


          28、如果塊移動操作(moveChunk)失敗了,我需要手動清除部分轉(zhuǎn)移的文檔嗎?

          不需要,移動操作是一致(consistent)并且是確定性的(deterministic);一次失敗后,移動操作會不斷重試;當完成后,數(shù)據(jù)只會出現(xiàn)在新的分片里(shard)。

          29、如果我在使用復制技術(shù)(replication),可以一部分使用日志(journaling)而其他部分則不使用嗎?

          可以。

          30、當更新一個正在被遷移的塊(Chunk)上的文檔時會發(fā)生什么?

          更新操作會立即發(fā)生在舊的塊(Chunk)上,然后更改才會在所有權(quán)轉(zhuǎn)移前復制到新的分片上。

          31、MongoDB在A:{B,C}上建立索引,查詢A:{B,C}和A:{C,B}都會使用索引嗎?

          不會,只會在A:{B,C}上使用索引。

          32、如果一個分片(Shard)停止或很慢的時候,發(fā)起一個查詢會怎樣?

          如果一個分片停止了,除非查詢設置了“Partial”選項,否則查詢會返回一個錯誤。如果一個分片響應很慢,MongoDB會等待它的響應。

          33、MongoDB支持存儲過程嗎?如果支持的話,怎么用?

          MongoDB支持存儲過程,它是JavaScript寫的,保存在db.system.js表中。

          34、如何理解MongoDB中的GridFS機制,MongoDB為何使用GridFS來存儲文件?

          GridFS是一種將大型文件存儲在MongoDB中的文件規(guī)范。使用GridFS可以將大文件分隔成多個小文檔存放,這樣我們能夠有效的保存大文檔,而且解決了BSON對象有限制的問題。

          35、為什么MongoDB的數(shù)據(jù)文件很大?

          MongoDB采用的預分配空間的方式來防止文件碎片。

          36、分析器在MongoDB中的作用是什么?

          分析器就是explain顯示每次操作性能特點的數(shù)據(jù)庫分析器。通過分析器可能查找比預期慢的操作。

          37、如何執(zhí)行事務/加鎖?

          因為MongoDB設計就是輕量高性能,所以沒有傳統(tǒng)的鎖和復雜的事務的回滾。

          38、getLastError的作用?

          調(diào)用getLastError可以確認當前的寫操作是否成功的提交。

          39、MongoDB的結(jié)構(gòu)介紹?

          數(shù)據(jù)庫中存儲的對象設計bson,一種類似json的二進制文件,由鍵值對組成。

          40、數(shù)據(jù)庫的整體結(jié)構(gòu)?

          鍵值對–》文檔–》集合–》數(shù)據(jù)庫

          41、MongoDB是由哪種語言寫的?

          MongoDB用C++編寫的,流行的開源數(shù)據(jù)庫MySQL也是用C++開發(fā)的。C++于1983年發(fā)行,是一種使用廣泛的計算機程序設計語言。它是一種通用程序設計語言,支持多種編程模式。

          42、MongoDB的優(yōu)勢有哪些?

          • 面向文檔的存儲:以JSON格式的文檔保存數(shù)據(jù)。

          • 任何屬性都可以建立索引。

          • 復制以及高可擴展性。

          • 自動分片。

          • 豐富的查詢功能。

          • 快速的即時更新。

          • 來自MongoDB的專業(yè)支持。


          43、什么是集合?

          集合就是一組MongoDB文檔。它相當于關系型數(shù)據(jù)庫(RDBMS)中的表這種概念。集合位于單獨的一個數(shù)據(jù)庫中。一個集合內(nèi)的多個文檔可以有多個不同的字段。一般來說,集合中的文檔都有著相同或相關的目的。

          44、什么是文檔?

          文檔由一組key value組成。文檔是動態(tài)模式,這意味著同一集合里的文檔不需要有相同的字段和結(jié)構(gòu)。在關系型數(shù)據(jù)庫中table中的每一條記錄相當于MongoDB中的一個文檔。

          45、什么是“mongod”?

          mongod是處理MongoDB系統(tǒng)的主要進程。它處理數(shù)據(jù)請求,管理數(shù)據(jù)存儲,和執(zhí)行后臺管理操作。當我們運行mongod命令意味著正在啟動MongoDB進程,并且在后臺運行。

          46、“mongod”參數(shù)有什么?

          • 傳遞數(shù)據(jù)庫存儲路徑,默認是“/data/db”

          • 端口號默認是“27017”


          47、什么是“mongo”?

          它是一個命令行工具,用于連接一個特定的mongod實例。當我們沒有帶參數(shù)運行mongo命令,它將使用默認的端口號和localhost連接。

          48、在MongoDB中如何創(chuàng)建一個新的數(shù)據(jù)庫?

          MongoDB用use+數(shù)據(jù)庫名稱的方式來創(chuàng)建數(shù)據(jù)庫。use會創(chuàng)建一個新的數(shù)據(jù)庫,如果該數(shù)據(jù)庫存在,則返回這個數(shù)據(jù)庫。

          49、什么是非關系型數(shù)據(jù)庫?

          非關系型數(shù)據(jù)庫是對不同于傳統(tǒng)關系型數(shù)據(jù)庫的統(tǒng)稱。非關系型數(shù)據(jù)庫的顯著特點是不使用SQL作為查詢語言,數(shù)據(jù)存儲不需要特定的表格模式。由于簡單的設計和非常好的性能所以被用于大數(shù)據(jù)和Web Apps等。

          50、非關系型數(shù)據(jù)庫有哪些類型?

          • -Key-Value 存儲,eg:Amazon S3

          • 圖表,eg:Neo4J

          • 文檔存儲,eg:MongoDB

          • 基于列存儲,eg:Cassandra


          51、為什么用MongoDB?

          • 架構(gòu)簡單

          • 沒有復雜的連接

          • 深度查詢能力,MongoDB支持動態(tài)查詢

          • 容易調(diào)試

          • 容易擴展

          • 不需要轉(zhuǎn)化/映射應用對象到數(shù)據(jù)庫對象

          • 使用內(nèi)部內(nèi)存作為存儲工作區(qū),以便更快的存取數(shù)據(jù)


          52、在哪些場景使用MongoDB?

          • 大數(shù)據(jù)

          • 內(nèi)容管理系統(tǒng)

          • 移動端Apps

          • 數(shù)據(jù)管理


          53、MongoDB中的命名空間是什么意思?

          MongoDB內(nèi)部有預分配空間的機制,每個預分配的文件都用0進行填充。

          數(shù)據(jù)文件每新分配一次,它的大小都是上一個數(shù)據(jù)文件大小的2倍,每個數(shù)據(jù)文件最大2G。

          MongoDB每個集合和每個索引都對應一個命名空間,這些命名空間的元數(shù)據(jù)集中在16M的*.ns文件中,平均每個命名占用約628字節(jié),也即整個數(shù)據(jù)庫的命名空間的上限約為24000。

          如果每個集合有一個索引(比如默認的_id索引),那么最多可以創(chuàng)建12000個集合。如果索引數(shù)更多,則可創(chuàng)建的集合數(shù)就更少了。同時,如果集合數(shù)太多,一些操作也會變慢。

          要建立更多的集合的話,MongoDB也是支持的,只需要在啟動時加上“--nssize”參數(shù),這樣對應數(shù)據(jù)庫的命名空間文件就可以變得更大以便保存更多的命名。這個命名空間文件(.ns文件)最大可以為2G。

          每個命名空間對應的盤區(qū)不一定是連續(xù)的。與數(shù)據(jù)文件增長相同,每個命名空間對應的盤區(qū)大小都是隨分配次數(shù)不斷增長的。目的是為了平衡命名空間浪費的空間與保持一個命名空間數(shù)據(jù)的連續(xù)性。

          需要注意的一個命名空間$freelist,這個命名空間用于記錄不再使用的盤區(qū)(被刪除的Collection或索引)。每當命名空間需要分配新盤區(qū)時,會先查看$freelist是否有大小合適的盤區(qū)可以使用,如果有就回收空閑的磁盤空間。

          54、哪些語言支持MongoDB?

          C、C++、C#、Java、Node.js、Perl、PHP等。

          55、在MongoDB中如何查看數(shù)據(jù)庫列表?

          使用命令:

          show dbs


          56、MongoDB中的分片是什么意思?

          分片是將數(shù)據(jù)水平切分到不同的物理節(jié)點。當應用數(shù)據(jù)越來越大的時候,數(shù)據(jù)量也會越來越大。當數(shù)據(jù)量增長時,單臺機器有可能無法存儲數(shù)據(jù)或可接受的讀取寫入吞吐量。利用分片技術(shù)可以添加更多的機器來應對數(shù)據(jù)量增加以及讀寫操作的要求。

          57、什么是復制?

          復制是將數(shù)據(jù)同步到多個服務器的過程,通過多個數(shù)據(jù)副本存儲到多個服務器上增加數(shù)據(jù)可用性。復制可以保障數(shù)據(jù)的安全性,災難恢復,無需停機維護(如備份、重建索引、壓縮),分布式讀取數(shù)據(jù)。

          58、在MongoDB中如何在集合中插入一個文檔?

          要想將數(shù)據(jù)插入MongoDB集合中,需要使用insert()或save()方法。

          >db.collectionName.insert({"key":"value"})
          >db.collectionName.save({"key":"value"})


          59、在MongoDB中如何除去一個數(shù)據(jù)庫?

          MongoDB的dropDatabase()命令用于刪除已有數(shù)據(jù)庫:

          >db.dropDatabase()


          60、在MongoDB中如何創(chuàng)建一個集合?

          在MongoDB中,創(chuàng)建集合采用db.createCollection(name, options)方法。options是一個用來指定集合配置的文檔。

          >db.createCollection("collectionName")db.createCollection() - MongoDB Manual>db.createCollection()


          61、在MongoDB中如何查看一個已經(jīng)創(chuàng)建的集合?

          可以使用show collections查看當前數(shù)據(jù)庫中的所有集合清單:

          >show collections


          62、在MongoDB中如何刪除一個集合?

          MongoDB利用db.collection.drop()來刪除數(shù)據(jù)庫中的集合:

          >db.CollectionName.drop()


          63、為什么要在MongoDB中使用分析器?

          數(shù)據(jù)庫分析工具(Database Profiler)會針對正在運行的mongod實例收集數(shù)據(jù)庫命令執(zhí)行的相關信息。包括增刪改查的命令以及配置和管理命令。分析器(profiler)會寫入所有收集的數(shù)據(jù)到system.profile集合,一個capped集合在管理員數(shù)據(jù)庫。分析器默認是關閉的你能通過per數(shù)據(jù)庫或per實例開啟。

          64、MongoDB支持主鍵外鍵關系嗎?

          默認MongoDB不支持主鍵和外鍵關系。用MongoDB本身的API需要硬編碼才能實現(xiàn)外鍵關聯(lián),不夠直觀且難度較大。

          65、MongoDB支持哪些數(shù)據(jù)類型?

          String、Integer、Double、Boolean、Object、Object ID、Arrays、Min/Max Keys、Datetime、Code、Regular Expression等。

          66、為什么要在MongoDB中用“Code”數(shù)據(jù)類型?

          “Code”類型用于在文檔中存儲JavaScript代碼。

          67、為什么要在MongoDB中用“Regular Expression”數(shù)據(jù)類型?

          “Regular Expression”類型用于在文檔中存儲正則表達式。

          68、為什么在MongoDB中使用“ObjectID”數(shù)據(jù)類型?

          “ObjectID”數(shù)據(jù)類型用于存儲文檔ID。

          69、“ObjectID”由哪些部分組成?

          一共有四部分組成:時間戳、客戶端ID、客戶進程ID、三個字節(jié)的增量計數(shù)器。

          _id是一個12字節(jié)長的十六進制數(shù),它保證了每一個文檔的唯一性。在插入文檔時,需要提供_id。如果你不提供,那么MongoDB就會為每一文檔提供一個唯一的id。_id的頭4個字節(jié)代表的是當前的時間戳,接著的后3個字節(jié)表示的是機器id號,接著的2個字節(jié)表示MongoDB服務器進程id,最后的3個字節(jié)代表遞增值。

          70、在MongoDB中什么是索引?

          索引用于高效的執(zhí)行查詢,沒有索引MongoDB將掃描查詢整個集合中的所有文檔這種掃描效率很低,需要處理大量數(shù)據(jù)。索引是一種特殊的數(shù)據(jù)結(jié)構(gòu),將一小塊數(shù)據(jù)集保存為容易遍歷的形式。索引能夠存儲某種特殊字段或字段集的值,并按照索引指定的方式將字段值進行排序。

          71、如何添加索引?

          使用db.collection.createIndex()在集合中創(chuàng)建一個索引:

          >db.collectionName.createIndex({columnName:1})


          72、用什么方法可以格式化輸出結(jié)果?

          使用pretty()方法可以格式化顯示結(jié)果:

          >db.collectionName.find().pretty()


          73、如何使用“AND”或“OR”條件循環(huán)查詢集合中的文檔?

          在find()方法中,如果傳入多個鍵,并用逗號(,)分隔它們,那么MongoDB會把它看成是AND條件。

          >db.mycol.find({key1:value1, key2:value2}).pretty()

          若基于OR條件來查詢文檔,可以使用關鍵字$or。

          >db.mycol.find(
           {
            $or: [
              {key1: value1}, {key2:value2}
            ]
           }
          ).pretty()


          74、在MongoDB中如何更新數(shù)據(jù)?

          update()與save()方法都能用于更新集合中的文檔。update()方法更新已有文檔中的值,而save()方法則是用傳入該方法的文檔來替換已有文檔。

          75、如何刪除文檔?

          MongoDB利用remove()方法清除集合中的文檔。它有2個可選參數(shù):

          • deletion criteria:(可選)刪除文檔的標準。

          • justOne:(可選)如果設為true或1,則只刪除一個文檔。

          >db.collectionName.remove({key:value})


          76、在MongoDB中如何排序?

          MongoDB中的文檔排序是通過sort()方法來實現(xiàn)的。sort()方法可以通過一些參數(shù)來指定要進行排序的字段,并使用1和-1來指定排序方式,其中1表示升序,而-1表示降序。

          >db.connectionName.find({key:value}).sort({columnName:1})


          77、什么是聚合?

          聚合操作能夠處理數(shù)據(jù)記錄并返回計算結(jié)果。聚合操作能將多個文檔中的值組合起來,對成組數(shù)據(jù)執(zhí)行各種操作,返回單一的結(jié)果。它相當于SQL中的count(*)組合group by。對于MongoDB中的聚合操作,應該使用aggregate()方法。

          >db.COLLECTION_NAME.aggregate(AGGREGATE_OPERATION)


          78、在MongoDB中什么是副本集?

          在MongoDB中副本集由一組MongoDB實例組成,包括一個主節(jié)點多個次節(jié)點,MongoDB客戶端的所有數(shù)據(jù)都寫入主節(jié)點(Primary),副節(jié)點從主節(jié)點同步寫入數(shù)據(jù),以保持所有復制集內(nèi)存儲相同的數(shù)據(jù),提高數(shù)據(jù)可用性。

          來源:架構(gòu)師社區(qū)


          往期推薦



          Linux 能替代 Windows 嗎?

          存儲系統(tǒng)基礎知識介紹

          深入研究Docker聯(lián)合文件系統(tǒng)

          Linux交換分區(qū)要點匯總

          面試官:如果MySQL引起CPU消耗過大,你會怎么優(yōu)化?

          再見,MySQL!性能被 MariaDB 吊打…

          必須掌握的 MySQL 優(yōu)化原理

          MySQL 默認最大連接數(shù)是多少?

          實戰(zhàn) Kubernetes 中部署 MySQL 集群

          比較開源數(shù)據(jù)庫以選擇合適的工具

          常問的MySQL面試題集合

          MySQL 高頻面試題,都在這了

          MySQL實時在線備份恢復方案

          2020年MySQL數(shù)據(jù)庫面試題總結(jié)(50道題含答案解析)

          關注「開源Linux」加星標,提升IT技能


          點個在看少個 bug ??

          瀏覽 47
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  男人的天堂色 | 日本无码每更新 | 小處女末发育嫩苞AV | 色噜噜人妻av中文字幕 | 日韩老阿姨在线综合 |