版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
MySQL數據庫應用
項目教程項目七走進NoSQL7.1初識NoSQL
7.2走進HBase
7.3走進MongoDB
7.1初識NoSQL7.1.1認識NoSQL1.NoSQL的簡介NoSQL數據庫成為一個熱門的新領域。“NoSQL”是“NotOnlySQL”的縮寫,表示適用關系型數據庫的時候就使用關系型數據庫,不適用的時候可以考慮使用更加合適的數據庫工具。NoSQL數據庫一般會弱化關系,即弱化模式或表結構、弱化完整性約束、弱化甚至取消事務機制等,其目的是去掉關系模型的約束,以實現(xiàn)強大的分布式部署。主要特點包括分區(qū)容錯性、伸縮性和訪問效率(可用性)等。云服務商也都提供了在線的NoSQL數據庫及關系型數據庫。例如,在亞馬遜的公有云服務AWS(AmazonWebServices)中,提供了名為DynamoDB的NoSQL數據庫服務,阿里云、騰訊云等知名云服務商均提供了在線的Key-Value數據庫服務(NoSQL數據庫的一種)。7.1初識NoSQL7.1.1認識NoSQL2.NewSQL的概念NewSQL一般被看作傳統(tǒng)關系型數據庫的延伸,是在關系型數據庫的基礎上通過吸收NoSQL數據庫的優(yōu)點而形成的。NewSQL被描繪成既支持關系模型和強事務機制,也支持分布式并行結構(具有良好的伸縮性和容錯性)的數據庫形式。NewSQL還可以通過SQL語句進行查詢等。從NewSQL的發(fā)展現(xiàn)狀來看,有兩個特點值得注意。(1)NewSQL仍缺乏一個權威的定義,其歸類也比較模糊。例如,一些文章會將某些內存數據庫或者某些關系型數據庫的擴展系統(tǒng)歸類為NewSQL。(2)缺少知名度較高的NewSQL產品。7.1初識NoSQL7.1.1認識NoSQL3.NoSQL的典型應用場景(1)海量日志數據、業(yè)務數據或監(jiān)控數據的管理和查詢。例如,管理電商網站及其應用程序的用戶訪問記錄、交易記錄,管理工業(yè)物聯(lián)網中的數據采集與監(jiān)視控制系統(tǒng)(SupervisoryControlAndDataAcquisition,SCADA)的數據。(2)特殊的或復雜的數據模型的簡化處理。例如,互聯(lián)網中的網頁和鏈接可以看作是點和線的關系,這樣可以把互聯(lián)網中的網站和網頁的關系抽象為有向圖。(3)作為數據倉庫、數據挖掘系統(tǒng)或OLAP(On-LineAnalyticalProcessing,聯(lián)機分析處理)系統(tǒng)的后臺數據支撐。7.1初識NoSQL7.1.1認識NoSQL4.NoSQL數據庫的相關技術NoSQL數據庫一般基于分布式系統(tǒng)實現(xiàn)數據的管理與查詢。(1)分布式數據處理。大數據的處理和計算包含數據預處理、數據統(tǒng)計分析和數據挖掘等方面。分布式數據處理需要解決數據分割,任務的調度、監(jiān)控和管理及分布式任務的執(zhí)行等問題。(2)時間同步服務。在分布式應用中,經常需要確保所有節(jié)點的時間是一致的。(3)布隆過濾器。7.1初識NoSQL7.1.2NoSQL的數據存儲模式和相對應的數據庫NoSQL的數據存儲模式(DataStorageScheme)主要涉及在數據庫中存放數據的邏輯結構,基本的數據讀寫、修改、刪除等操作,數據處理對象及在分布式狀態(tài)下的一些處理方式。1.列存儲模式和列族數據庫列存儲模式主要用在OLAP、數據倉庫等場合。列存儲模式一般不預先定義結構。列存儲模式則一般通過數據追加(append)的方式實現(xiàn)。此外,利用列存儲模式還可以通過數據字典的方式實現(xiàn)數據壓縮。例如,將某個列或某些列的值空間做成數據字典(表),在存儲列值時,只需要存儲數據字典中的值序號即可。列存儲模式可能會通過“列族”(columnfamily)的概念來組織數據,列族是若干列的集合,各個列的數量和名稱都是任意的。列族數據庫有谷歌的BigTable和Dremel、斯通布雷克提出的C-Store等。7.1初識NoSQL7.1.2NoSQL的數據存儲模式和相對應的數據庫2.文檔存儲模式和文檔數據庫文檔存儲模式和鍵值存儲模式具有一定的相似性,但其值一般為半結構化數據,需要通過某種半結構化標記語言進行描述,如JSON或XML。文檔存儲模式可以通過關鍵詞查詢文檔內部的結構,而非只通過鍵來進行檢索。文檔存儲模式通常會采用JSON或類似JSON的方式描述數據。文檔數據庫有MongoBD和CouchDB等,這些數據庫可以在分布式集群上實現(xiàn)文檔式數據存儲和管理。文檔數據庫的優(yōu)點和缺點。(1)優(yōu)點。①簡單。②相對高效。③文檔格式處理。④查詢功能強大。⑤分布式處理。(2)缺點。①缺少約束。②數據出現(xiàn)冗余。③相對低效。7.1初識NoSQL7.1.2NoSQL的數據存儲模式和相對應的數據庫3.鍵值對存儲模式和鍵值數據庫鍵值對存儲模式也就是Key-Value模式。適合按照鍵對數據進行快速定位,還可以通過對鍵進行排序和分區(qū),以實現(xiàn)更快速的數據定位。鍵值對存儲模式的NoSQL數據庫通常不會支持對值建立索引,因為值對應的列不確定鍵值數據庫(Key-ValueDatabase)是一類輕量級且以內存處理為主的NoSQL數據庫。(1)鍵值數據庫的優(yōu)點。①簡單。②快速。③高效計算。④分布式處理。(2)鍵值數據庫的缺點。①對值進行多值查找的功能較弱。②缺少約束,意味著更容易出錯。③不易建立復雜關系。7.1初識NoSQL7.1.2NoSQL的數據存儲模式和相對應的數據庫4.圖存儲模式和圖數據庫圖存儲模式是一種專門存儲節(jié)點和邊以及節(jié)點之間的連線關系的拓撲存儲方法。節(jié)點和邊都存在描述參數,邊是矢量,即有方向的,可能是單向的,也可能是雙向的。在圖存儲模式中,每個節(jié)點都需要有指向其所有相連對象的指針,以實現(xiàn)快速的路由。圖數據庫中的節(jié)點都是相互連接的,因此對數據進行分片和分布式部署較為困難。相對于列族數據庫、文檔數據庫、鍵值數據庫而言,圖數據庫更具個性,更適合圖論的應用。7.1初識NoSQL7.2走進HBase
7.2.1認識HBaseHBase是一種“面向列加鍵值對”存儲模式的NoSQL數據庫,底層的數據文件一般仍采用HDFS格式存儲,但其文件結構和元數據等由HBase維護。為了實現(xiàn)并行的數據寫入和檢索,其元數據(分區(qū)信息)采用分布式方式管理,因此HBase在數據和元數據層面都是分布式的。HBase具有以下優(yōu)點。采用面向列(列族)加鍵值對的存儲模式??梢詫崿F(xiàn)便捷的橫向擴展??梢宰詣訉崿F(xiàn)數據分片。可以實現(xiàn)嚴格的讀寫一致性和自動轉移故障??梢詫崿F(xiàn)對全文的檢索與過濾。支持通過命令行界面或者Java、Python等語言來進行操作。7.2走進HBase7.2.1認識HBase1.HBase的數據模型HBase采用的是一種面向列加鍵值對存儲模式,HBase不需要預先設計列的結構,當添加新的列時,只需要記錄新記錄的列名即可,不會對已有的數據產生影響。鍵值對的實際存儲格式如圖7.2走進HBaseHBase的每行數據或者說每個鍵值對都包含行鍵、列族名稱、列名、時間戳、行鍵類型與值。需要記錄其長度,鍵和值的最大長度(字符串長度)都是32KB。行鍵類型表明當前記錄所表示的行為,如新增、刪除、刪除列、刪除列族等。7.2.1認識HBase2.HBase的拓撲結構HBase節(jié)點采用了主/從式的拓撲結構,其主要組件包括一個主節(jié)點和若干個從節(jié)點。HBase需要借助Zookeeper來實現(xiàn)節(jié)點監(jiān)控和容錯。為實現(xiàn)Master節(jié)點的高可用性,可以部署多個Master節(jié)點,有一個為活躍(Active)節(jié)點,其他為備用(Standby)節(jié)點。HBase的典型架構如圖7.2走進HBase7.2.1認識HBase3.水平分區(qū)原理HBase可以將數據表進行水平分割,形成不同的區(qū)域(Region),并由不同的Regionserver進行管理,以實現(xiàn)分布式的數據寫入和查詢。HBase的水平分區(qū)原理如圖。7.2走進HBase7.2.2操作HBase1.查看HBase的基本信息使用HBase命令可以查看當前HBase的基本信息?!纠?】查看當前HBase的基本信息。顯示當前HBase的版本號。
hbase(main):020:0>version顯示各主節(jié)點的狀態(tài)。
hbase(main):021:0>status顯示當前用戶名。
hbase(main):022:0>whoam退出HBaseShell模式。
hbase(main):025:0>exit7.2走進HBase7.2.2操作HBase2.表和列族操作HBase的表結構只有表名和列族兩項內容。列族屬性及其說明如右表。7.2走進HBase7.2.2操作HBase2.表和列族操作HBaseShell中操作數據表的常用命令如表7.2走進HBase7.2.2操作HBase2.表和列族操作在HBaseShell中數據表和數據的讀寫等基本操作。(1)創(chuàng)建數據表。【例2】在HBaseShell中創(chuàng)建數據表。創(chuàng)建一個student數據表,數據表中含有一個列族address。hbase(main):001:0>create‘student’,‘address’創(chuàng)建一個student_info數據表,數據表中含有name和address兩個列族。hbase(main):003:0>create‘student_info’,‘name’,‘address’創(chuàng)建book數據表,表中含有一個列族address。設定數據表中所有列族的分區(qū)單次持久化的最大值為128MB。hbase(main):006:0>create‘book’,‘address’,MAX_FILESTIZE=>‘134217728’7.2走進HBase7.2.2操作HBase2.表和列族操作(2)查看表名列表、數據表的信息等?!纠?】查看數據表的信息。查看表名列表。hbase(main):008:0>list查看是否存在student數據表。hbase(main):009:0>exist‘student’描述student_info數據表的結構。hbase(main):011:0>describe‘student_info’7.2走進HBase7.2.2操作HBase2.表和列族操作(3)修改表結構。在student數據表中增加一個name列族,可以采用如下兩種方式:alter‘student’,‘name’alter‘student’,‘address’,{NAME=>‘name’,INMEMORY=>true}刪除一個列族及其包含的數據,可以采用如下兩種方式:alter‘student’,‘delete’=>‘name’alter‘student’,{NAME=>‘name’,METHOD=>‘delete’}(4)刪除數據表。如需要刪除player數據表,先禁用player數據表:disable‘player’,可以用is_disabled命令查看禁用是否完成:is_disabled‘player’,然后刪除數據表:drop‘player’。7.2走進HBase7.2.2操作HBase3.數據更新(1)數據插入。使用put命令可以實現(xiàn)單條數據的插入和修改?!纠?】在student數據表的address列族中插入數據。hbase(main):020:0>put‘student’,‘001’,‘address:city’,‘nanjing’,1hbase(main):022:0>put‘student’,‘002’,‘address:nation’,‘China’hbase(main):024:0>put‘student’,‘002’,‘address:province’,‘jiangsu’(2)數據更新。執(zhí)行put命令,則視為數據更新。put‘student’,‘001’,‘address:city’,‘suzhou’,2(3)數據刪除。delete‘student’,‘002’,‘address’delete‘student’,‘002’,‘address:province’7.2走進HBase7.2.2操作HBase3.數據更新(4)計數器。使用incr命令可以將cell的數值在原值上加入指定數值?!纠?】對student數據表的address列族中的room列以10為單位計數,連續(xù)兩次累計計數。計數第一次
hbase(main):029:0>incr‘student’,‘001’,‘address:room’,10查看student數據表的address列族中的room列的值。
hbase(main):030:0>get‘student’,‘001’,‘address:room’計數第二次
hbase(main):031:0>incr‘student’,‘001’,‘address:room’,10查看student數據表的address列族中的room列的值。
hbase(main):032:0>get‘student’,‘001’,‘address:room’7.2走進HBase7.2.2操作HBase4.數據查詢HBase中有兩種基本的數據查詢方法。(1)
get:根據行鍵獲取一條數據。(2)
scan:掃描一個數據表,可以指定行鍵范圍或使用過濾器限制范圍?!纠?】數據查詢。在student數據表中插入數據。hbase(main):043:0>put‘student’,‘001’,‘address:city’,‘nanjinglishui’,1hbase(main):044:0>put‘student’,‘001’,‘address:city’,‘nanjingjiangling’,2hbase(main):045:0>put‘student’,‘001’,‘address:city’,‘nanjingxixia’按行鍵獲取數據。get命令的必選參數為表名和行鍵名。hbase(main):046:0>get‘student’,‘001’7.2走進HBase7.2.2操作HBase4.數據查詢(按行鍵、列族的名稱、時間戳的范圍、數據版本及過濾器獲取數據。hbase(main):047:0>get‘student’,‘001’,{COLUMN=>‘address’}hbase(main):049:0>get‘student’,‘001’,{COLUMN=>‘address’,TIMERANGE=>[1,2]}hbase(main):051:0>get‘student’,‘001’,{COLUMN=>‘address’,VERSIONS=>3}hbase(main):052:0>get‘student’,‘001’,{COLUMN=>‘address’,TIMERANGE=>[1,2],VERSIONS=>3}hbase(main):053:0>get‘student’,‘001’,{FILTER=>“ValueFilter(=,‘binary:nanjianglishui’)”}若不指定行鍵掃描數據,則HBase通過全表掃描的方式查詢數據。hbase(main):053:0>scan‘student’7.2走進HBase7.2.2操作HBase4.數據查詢(3)
行計數。使用count命令可以計算數據表的邏輯行數?!纠?】數據表的行統(tǒng)計。統(tǒng)計student數據表的邏輯行數。
hbase(main):070:0>count‘student’(4)
過濾查詢。常見的過濾器如下。行鍵過濾器。列族和列名過濾器。值過濾器。7.2走進HBase7.2.2操作HBase5.快照操作快照是一種不復制數據就能建立表副本的方法,可以用于數據恢復,構建每日、每周或每月的數據報告,也可在測試中使用?!纠?】快照操作。在HBaseShell中建立表的快照snapshot_one。
hbase(main):138:0>snapshot‘student’,‘snapshot_one’通過快照生成student_one數據表。
hbase(main):139:0>clone_snapshot‘snapshot_one’,‘student_one’查看快照列表。
hbase(main):140:0>list_snapshots通過快照恢復student數據表,將拋棄快照之后的所有變化。
hbase(main):141:0>restore_snapshot‘snapshot_one’7.2走進HBase7.2.3數據導入/導出1.批量導入數據(1)利用ImportTsv命令。在Linux操作系統(tǒng)中通過HBase指令調用ImportTsv命令。hbaseorg.apache.hadoop.hbase.mapreduce.ImportTsv-Dimporttsv.columns=HBASE_ROW_KEY,address:city,name:nick-Dimporttsv.skip.bad.lines=truestudenthdfs://namenode:8020/input/(2)bulk-load方法。該方法直接將原始數據轉換成HFile,并將數據復制到HDFS的相應位置,再將文件中的數據納入HBase管理(3)從關系型數據庫中將數據導入HBase。在Hadoop組件中,Sqoop的組件可以實現(xiàn)Hadoop、Hive、HBase等大數據工具與關系型數據庫(如MariaDB、Oracle)之間的數據導入和導出。7.2走進HBase7.2.3數據導入/導出【例9】Sqoop組件的操作。使用Sqoop組件列出MariaDB服務器中的所有數據庫。sqooplist-databases--connectjdbc:mysql://localhost:3306--usernameroot--password000000使用Sqoop組件列出MariaDB中teaching_management數據庫中所有的數據表。sqooplist-tables--connectjdbc:mysql://localhost:3306/teaching_management--usernameroot--password000000sqoopimport--connectjdbc:mysql://localhost:3306/teaching_management--tablestudent_info--hbase-tablestudent--column-familyinfo--hbase-row-keysno--hbase-create-table--username‘root’--password‘000000’7.2走進HBase7.2.3數據導入/導出2.備份和恢復(1)導出數據。利用下面的命令可以將HBase的數據導出到HDFS。
hbaseorg.apache.hadoop.hbase.mapreduce.Export<tablename><outputdir>(2)導入數據。將導出的數據恢復到HBase中,可以采用如下命令。
hbaseorg.apache.hadoop.hbase.mapreduce.Import<tablename><inputdir>(3)利用快照備份數據。將快照備份到HDFS,可以采用如下命令。
hbaseorg.apache.hadoop.hbase.snapshot.ExportSnapshot-snapshot<snap-shotname>--copy-to<outputdir>(4)復制數據表。
hbaseorg.apache.hadoop.hbase.mapreduce.CopyTable--=<NEW_TABLE_NAME>--peer.adr=<zookeeper_peer:2181://hbase><TABLE_NAME>7.2走進HBase7.3走進MongoDB7.3.1認識MongoDB目前常見的文檔數據庫有MongoDB和ApacheCouchDB等。
1.文檔和集合MongoDB是典型的無模式NoSQL數據庫,MongoDB會采用“文檔”表示描述數據的結構。一組文檔稱為“集合”,可以類比傳統(tǒng)關系型數據庫中的“數據表”。但集合是無模式的,不同結構的文檔可以歸屬于同一個集合。MongoDB采用BSON來進行數據存儲與編碼傳輸。其主要優(yōu)勢在于通過改進存儲結構,BSON的檢索速度更快。例如,BSON在實際存儲時會將各個字段的長度存儲在字段頭部,因此在遍歷數據時更容易跳過不需要的數據。BSON支持多種數據類型,如字符串、整型、浮點型等,這使得用戶操作更加容易。7.3走進MongoDB7.3.1認識MongoDB1.文檔和集合BSON支持的內嵌數據結構類型如表。7.3走進MongoDB7.3.1認識MongoDB2.分片機制MongoDB支持3種分片策略:升序分片、hash分片和位置分片。3.復制集MongoDB支持多副本,多副本是以主/從復制的形式實現(xiàn)的。MongoDB中稱這種機制為復制集機制。MongoDB的復制集機制如圖7.3走進MongoDB7.3.1認識MongoDB4.集群架構MongoDB集群存在分片機制時,存在3種基本角色Mongod(或稱為Shard)服務器。Mongos服務器。Config服務器。MongoDB集群架構的拓撲結構如圖7.3走進MongoDB7.3.1認識MongoDB5.存儲引擎存儲引擎是MongoDB的核心組件,負責將數據存儲在硬盤和內存上。MongoDB支持以下3類存儲引擎。(1)WiredTiger。它是目前推薦的存儲引擎,支持文檔級別的多副本和一致性管理、快照和檢查點、操作日志、數據壓縮等多種特性。(2)In-Memory。它用于將數據存儲在內存中,將少量的元數據和診斷日志(Diagnosti-cLog)存儲到硬盤文件中。(3)MMAPv1。它是MongoDB早期使用的存儲引擎,一般認為其綜合性能不如WiredTi-ger。由于存在時間較長,因此它對一些外圍組件或第三方插件的支持會更好。7.3走進MongoDB7.3.2操作MongoDB1.MongoDB的Shell環(huán)境MongoShell是MongoDB的交互式JavaScript接口??梢允褂肕ongoShell查詢和更新數據及執(zhí)行管理操作。MongoDB的Shell環(huán)境中有一個重要的db.runCommand命令,可以完成多種復雜的數據操作,命令格式為:db.runCommand({<command>})。db.runCommand命令可以完成數據庫與大量節(jié)點環(huán)境的維護與管理工作。下面兩條語句是基本等價的。db.mycol.find({item2:{$gt:1}})db.runCommand({find:“mycol”,filter:{item2:{$gt:1}}})7.3走進MongoDB7.3.2操作MongoDB1.MongoDB的Shell環(huán)境【例10】MongoDB的Shell環(huán)境的基礎操作。登錄MongoDB的Shell環(huán)境。
mongo或mongo--host:27017//IP地址為Mongos服務器的IP地址在Shell環(huán)境中執(zhí)行help命令查看幫助主題。
>db.help>db.collection.help()執(zhí)行db.runCommand命令。
>db.mycol.find({item2:{$gt:1}})
>db.runCommand({find:“mycol”,filter:{item2:{$gt:1}}})退出MongoDB的Shell環(huán)境。
>exit或quit()7.3走進MongoDB7.3.2操作MongoDB2.數據庫操作和集合操作(1)數據庫操作。①查看當前連接的服務器。
db.getMongo()②查看數據庫列表。
showdbs③切換使用的數據庫。
use<db>④顯示當前數據庫名稱。
db7.3走進MongoDB7.3.2操作MongoDB2.數據庫操作和集合操作⑤查看當前數據庫中的所有集合。
showcollections⑥查看當前數據庫中的所有集合,并以JSON方式顯示集合名稱。
db.getCollectionNames()⑦查看當前數據庫中詳細的集合信息。
db.getCollectionInfos()⑧刪除當前數據庫,并刪除相關數據。
db.dropDatabase()7.3走進MongoDB7.3.2操作MongoDB2.數據庫操作和集合操作(2)集合操作。①新建集合。
db.createCollection(<name>)②刪除集合。
db.myCol.drop()③定長集合操作。除了指定名稱,新建集合命令還可以附加若干可選參數。例如:
db.createCollection(“cappedCol”,{capped:true,size:10000})④判斷一個集合是否為capped屬性。 db.cappedCol.isCapped()7.3走進MongoDB7.3.2操作MongoDB3.文檔插入、查詢、更新、刪除操作(1)文檔插入。①插入單個文檔的命令及語法。 db.collection.insertOne(document)②插入多個文檔。db.collection.insertMany()將多個文檔插入一個集合中。
db.mycol.insertMany(doc1,doc2)(2)文檔查詢。①查詢集合中的所有文檔,在find方法中傳一個空文檔作為查詢過濾條件。 db.mycol.find({})②以易讀方式顯示查詢結果。 db.mycol.find({}).pretty()7.3走進MongoDB7.3.2操作MongoDB3.文檔插入、查詢、更新、刪除操作③等值查詢。在查詢過濾文檔中使用<字段>:<值>的表達式實現(xiàn)等值查詢。 db.mycol.find({item2:‘item2’})④在查詢條件中使用查詢操作符。查詢過濾文檔中可以使用查詢操作符來指定多個條件。 db.mycol.find({item1:{$in:[“A”,“D”]}})(3)文檔更新。①更新單個文檔。 db.collection.updateOne(<filter>,<update>,<options>)②更新多個文檔。 db.collection.updateMany(<filter>,<update>,<options>)③更換文檔。db.collection.replaceOne(<filter>,<update>,<options>)7.3走進MongoDB7.3.2操作MongoDB3.文檔插入、查詢、更新、刪除操作(4)文檔刪除。①刪除集合中的單個文檔。 db.collection.deleteOne(<filter>,{writeConcern:<document>,collation:<document>,hint:<document|string>})②刪除集合中所有匹配的文檔。 db.collection.deleteMany(<filter>,{writeConcern:<document>,collation:<document>})7.3走進MongoDB7.3.2操作MongoDB3.文檔插入、查詢、更新、刪除操作【例11】在MongoDB中新建student數據庫,新建compute集合,使用for循環(huán)向集合中批量插入10條數據,定義變量i=1,插入{_id:i,name:“xiaoming”,age:21}。插入數據完畢后,統(tǒng)計集合中的數據條數,然后查詢集合中age大于20的記錄。>usestudent>db.createCollection(“compute”)>for(vari=1;i<10;i++){pute.insertOne({_id:i,name:“xiaoming”,age:18+i})}>pute.count()>pute.find({age:{$gt:20}}).pretty();7.3走進MongoDB7.3.2操作MongoDB4.聚合聚合為集合文檔數據庫提供各種處理數據的方法,并返回計算結果。MongoDB提供了3種方式來執(zhí)行聚合命令:聚合管道方法、MapReduce方法和單用途聚合方法。(1)聚合管道方法。常見的管道操作包括$group、$project、$match、$sort、$limit和$skip等。常見的聚合運算符包括$sum、$avg、$min/$max、$first/$last和$push等。常見的比較運算符包括$gt/$lt、$gte/$lte、$ne等。(2)MapReduce方法。語法格式:db.collection.mapreduce(function(){emit(<this.field1>,<this.field2>)},//map自定義函數function(key,values){returnArray.sum(values)},//reduce自定義函數{query:{<field>},out:<“result_name”>})7.3走進MongoDB7.3.2操作MongoDB4.聚合(3)單用途聚合方法。單用途聚合方法可以放在find命令后直接使用。目前有兩種單用途聚合操作:db.collection_name.count()和db.collection_name.distinct(),可用來聚合來自單個集合的文檔。①db.collection_name.count()表示統(tǒng)計集合里符合查詢條件的文檔數量。②db.collection_name.distinct()表示統(tǒng)計集合里指定鍵的不同值。7.3走進MongoDB7.3.2操作MongoDB5.索引MongoDB的索引是基于“B-樹數據結構”及對應算法形成的。(1)默認id索引。在創(chuàng)建集合期間,MongoDB在_id字段上創(chuàng)建唯一索引。(2)創(chuàng)建索引。使用db.collection.createIndex()命令在MongoShell中創(chuàng)建索引。 db.collection.createIndex(<keyandindextypespecification>,<options>)例如,在student集合的name字段上創(chuàng)建單個鍵降序索引。 db.student.createIndex({name:-1})考慮一個經常查詢products集合以填充現(xiàn)有庫存數據為目標的應用程序。 ducts.cre
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025版?zhèn)€人信用借款合同(附逾期罰息及信用修復條款)4篇
- 二零二五年度農業(yè)機械租賃收益分成合同
- 二零二五年度臨時雇傭服務合同規(guī)范文本
- 二零二五版木材加工廢棄物資源化利用合同范本3篇
- 二零二五版通信設備租賃擔保服務協(xié)議2篇
- 個人攝影服務2024年度合同9篇
- 二零二五年度房地產買賣合同標的及相關定義3篇
- 2025年度采石場礦山生態(tài)環(huán)境恢復合同范本3篇
- 2025年度智能交通信號燈安裝與維護合同3篇
- 2025版文化產業(yè)項目咨詢與投資合作委托協(xié)議3篇
- 2025年度公務車輛私人使用管理與責任協(xié)議書3篇
- 售后工程師述職報告
- 綠化養(yǎng)護難點要點分析及技術措施
- 2024年河北省高考歷史試卷(含答案解析)
- 車位款抵扣工程款合同
- 小學六年級數學奧數題100題附答案(完整版)
- 高中綜評項目活動設計范文
- 英漢互譯單詞練習打印紙
- 2023湖北武漢華中科技大學招聘實驗技術人員24人筆試參考題庫(共500題)答案詳解版
- 一氯二氟甲烷安全技術說明書MSDS
- 母嬰護理員題庫
評論
0/150
提交評論