版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
大數(shù)據(jù)存儲(chǔ)技術(shù)與應(yīng)用案例所有教學(xué)資源,我們給;所有復(fù)雜操作,我們做;圖書(shū)附贈(zèng),永久免費(fèi),只為老師用書(shū)更方便課件教案微課掃碼題庫(kù)建課互評(píng)考試平臺(tái)
學(xué)習(xí)工具0102030405申請(qǐng)簽到功能建課、建班(無(wú)需操作,技術(shù)專員負(fù)責(zé)搭建)系統(tǒng)自動(dòng)記錄考勤分創(chuàng)建簽到學(xué)生掃碼簽到掃碼申請(qǐng)免費(fèi)開(kāi)通簽到功能→動(dòng)態(tài)二維碼,防作弊
考勤記錄自動(dòng)統(tǒng)計(jì),匯入學(xué)生總成績(jī)課堂簽到項(xiàng)目一大數(shù)據(jù)存儲(chǔ)入門(mén)項(xiàng)目三列式數(shù)據(jù)庫(kù)HBase項(xiàng)目二數(shù)據(jù)倉(cāng)庫(kù)Hive項(xiàng)目四文檔數(shù)據(jù)庫(kù)MongoDB項(xiàng)目五圖數(shù)據(jù)庫(kù)Neo4j項(xiàng)目六鍵值數(shù)據(jù)庫(kù)Redis項(xiàng)目七NewSQL數(shù)據(jù)庫(kù)CockroachDB文檔數(shù)據(jù)庫(kù)MongoDB項(xiàng)目四任務(wù)一采用副本集模式部署MongoDB
任務(wù)二使用MongoDBShell操作網(wǎng)站數(shù)據(jù)任務(wù)三使用MongoDBJavaAPI操作網(wǎng)站數(shù)據(jù)文檔數(shù)據(jù)庫(kù)是一種以文檔的形式存儲(chǔ)和管理數(shù)據(jù)的數(shù)據(jù)庫(kù),其模式靈活且具有很強(qiáng)的數(shù)據(jù)描述能力。MongoDB是一個(gè)經(jīng)典的文檔數(shù)據(jù)庫(kù),能夠存儲(chǔ)和管理大量的非結(jié)構(gòu)化數(shù)據(jù)和實(shí)時(shí)數(shù)據(jù)。使用MongoDBShell和MongoDBJavaAPI,開(kāi)發(fā)者能夠以直觀和靈活的方式與MongoDB數(shù)據(jù)庫(kù)進(jìn)行交互,從而存儲(chǔ)和管理數(shù)據(jù)。本項(xiàng)目將介紹文檔數(shù)據(jù)庫(kù)和MongoDB的相關(guān)知識(shí),采用副本集模式部署MongoDB,使用MongoDBShell和MongoDBJavaAPI操作網(wǎng)站數(shù)據(jù)。項(xiàng)目導(dǎo)讀項(xiàng)目目標(biāo)了解文檔數(shù)據(jù)庫(kù)的特點(diǎn)和應(yīng)用場(chǎng)景。熟悉MongoDB的存儲(chǔ)結(jié)構(gòu)和數(shù)據(jù)類型。掌握使用MongoDBShell操作數(shù)據(jù)庫(kù)、集合和文檔的方法。掌握使用MongoDBJavaAPI操作數(shù)據(jù)庫(kù)、集合和文檔的方法。能采用副本集模式部署MongoDB。能使用MongoDBShell操作數(shù)據(jù)庫(kù)、集合和文檔,實(shí)現(xiàn)大數(shù)據(jù)的合理存儲(chǔ)和管理。能使用MongoDBJavaAPI操作數(shù)據(jù)庫(kù)、集合和文檔,開(kāi)發(fā)實(shí)用的大數(shù)據(jù)存儲(chǔ)和管理項(xiàng)目。增強(qiáng)主動(dòng)思考、積極解決問(wèn)題的意識(shí)。提升舉一反三、從多個(gè)角度思考問(wèn)題的能力。采用副本集模式部署MongoDB任務(wù)一MongoDB支持4種部署模式,分別為單機(jī)模式、副本集模式、分片集群模式和混合模式。為了簡(jiǎn)單模擬真實(shí)的生產(chǎn)環(huán)境,本書(shū)采用副本集模式部署MongoDB。在這種模式下,數(shù)據(jù)會(huì)復(fù)制在多個(gè)節(jié)點(diǎn)中,每個(gè)節(jié)點(diǎn)都包含完整的數(shù)據(jù)集副本,從而保證數(shù)據(jù)庫(kù)系統(tǒng)的可靠性和可用性。采用副本集模式部署MongoDB之前,我們先來(lái)學(xué)習(xí)一下文檔數(shù)據(jù)庫(kù)的特點(diǎn)和應(yīng)用場(chǎng)景,以及MongoDB的存儲(chǔ)結(jié)構(gòu)和數(shù)據(jù)類型。任務(wù)準(zhǔn)備問(wèn)題1:簡(jiǎn)述副本集模式和分片集群模式的區(qū)別。全班學(xué)生以3~5人為一組,各組選出組長(zhǎng)。組長(zhǎng)組織組員掃碼觀看“MongoDB的部署模式”視頻,討論并回答下列問(wèn)題。問(wèn)題2:簡(jiǎn)述不同部署模式的適用場(chǎng)景。MongoDB的部署模式一、文檔數(shù)據(jù)庫(kù)概述定義:文檔數(shù)據(jù)庫(kù)通常使用XML(extensiblemarkuplanguage)、JSON(javascriptobjectnotation)或BSON(binaryJSON)等格式將數(shù)據(jù)存儲(chǔ)在文檔中,它利用鍵(key)定位和檢索文檔。
XML是一種用于標(biāo)記電子文件結(jié)構(gòu)和傳輸數(shù)據(jù)的標(biāo)記語(yǔ)言,廣泛應(yīng)用于數(shù)據(jù)交換和信息發(fā)布等領(lǐng)域。
JSON是一種輕量級(jí)的數(shù)據(jù)交換格式,使用鍵值對(duì)來(lái)表示對(duì)象。其中,鍵是字符串類型的數(shù)據(jù),值可以是字符串、整數(shù)、布爾、數(shù)組、對(duì)象或Null等類型的數(shù)據(jù)。
BSON是一種二進(jìn)制形式的數(shù)據(jù)交換格式,以二進(jìn)制編碼存儲(chǔ)數(shù)據(jù),比JSON更適合存儲(chǔ)和傳輸大規(guī)模數(shù)據(jù)。高手點(diǎn)拔什么是XML、JSON、BSON?一、文檔數(shù)據(jù)庫(kù)概述文檔數(shù)據(jù)庫(kù)的特點(diǎn)(1)模式靈活。文檔數(shù)據(jù)庫(kù)不需要嚴(yán)格的預(yù)定義模式,每個(gè)文檔可以有不同的字段和結(jié)構(gòu)。這使得文檔數(shù)據(jù)庫(kù)非常適合存儲(chǔ)半結(jié)構(gòu)化或非結(jié)構(gòu)化的數(shù)據(jù),并且能夠靈活地應(yīng)對(duì)數(shù)據(jù)模式的變化。(2)查詢效率高文檔數(shù)據(jù)庫(kù)支持嵌套的文檔結(jié)構(gòu),允許在文檔的字段中嵌套其他文檔和數(shù)組。這使得文檔數(shù)據(jù)庫(kù)能夠更好地表示和處理復(fù)雜的數(shù)據(jù)結(jié)構(gòu)。(3)數(shù)據(jù)模型靈活列式數(shù)據(jù)庫(kù)不僅可以存儲(chǔ)結(jié)構(gòu)化數(shù)據(jù),還可以有效地存儲(chǔ)非結(jié)構(gòu)化和半結(jié)構(gòu)化數(shù)據(jù)。(4)高可擴(kuò)展性。許多文檔數(shù)據(jù)庫(kù)支持水平擴(kuò)展,可以在數(shù)據(jù)庫(kù)系統(tǒng)中添加節(jié)點(diǎn)來(lái)提高系統(tǒng)的性能。這使得文檔數(shù)據(jù)庫(kù)能夠處理大規(guī)模的動(dòng)態(tài)數(shù)據(jù)。(5)高性能。文檔數(shù)據(jù)庫(kù)的嵌套結(jié)構(gòu)使得多數(shù)操作可在單個(gè)文檔內(nèi)完成,從而避免了跨文檔的復(fù)雜數(shù)據(jù)操作,顯著提升了處理數(shù)據(jù)的速度。1、文檔數(shù)據(jù)庫(kù)的特點(diǎn)一、文檔數(shù)據(jù)庫(kù)概述2、文檔數(shù)據(jù)庫(kù)的應(yīng)用場(chǎng)景二、MongoDB的存儲(chǔ)結(jié)構(gòu)MongoDB的存儲(chǔ)結(jié)構(gòu)數(shù)據(jù)庫(kù)表數(shù)據(jù)庫(kù)用于組織和管理數(shù)據(jù),每個(gè)數(shù)據(jù)庫(kù)可以包含多個(gè)集合。集合(collection)每個(gè)集合都有一個(gè)唯一的名稱,它主要用于存儲(chǔ)一組相關(guān)的文檔。文檔(document)文檔是MongoDB中的數(shù)據(jù)存儲(chǔ)單元,主要用于存儲(chǔ)實(shí)際的數(shù)據(jù)。每個(gè)文檔通常是多個(gè)鍵值對(duì)的集合,其中鍵對(duì)應(yīng)的是字段名,值對(duì)應(yīng)的是字段值。{ ID:1001, Age:18, Name:"Jack", Phone:{MP:136****1233,TEL:761**23 } Address:"Beijing"}三、MongoDB的數(shù)據(jù)類型MongoDB使用BSON格式存儲(chǔ)數(shù)據(jù)。BSON的數(shù)據(jù)傳輸效率高,并為MongoDB提供了豐富的數(shù)據(jù)類型支持。提問(wèn):MongoDB提供了哪些常用的數(shù)據(jù)類型呢?三、MongoDB的數(shù)據(jù)類型MongoDB使用BSON格式存儲(chǔ)數(shù)據(jù)。BSON的數(shù)據(jù)傳輸效率高,并為MongoDB提供了豐富的數(shù)據(jù)類型支持。數(shù)據(jù)類型描述Integer(整數(shù))用于存儲(chǔ)整數(shù),有int(32位)和long(64位)兩種存儲(chǔ)類型,如{x:NumberInt(2)},{x:NumberLong(2)}Double(雙精度浮點(diǎn)數(shù))用于存儲(chǔ)小數(shù),如{x:12.2}Boolean(布爾)用于存儲(chǔ)值為true或false的數(shù)據(jù),如{x:true}Null(空值)用于表示空值或未定義的對(duì)象,如{x:null}String(字符串)用于存儲(chǔ)文本,如{x:"你好"}Date(日期)用于存儲(chǔ)日期和時(shí)間,如{x:newDate()}Timestamp(時(shí)間戳)用于記錄添加或修改文檔的具體時(shí)間,如{x:newTimestamp()}Array(數(shù)組)用于存儲(chǔ)數(shù)組或列表,如{x:["a","b","c"]}Object(對(duì)象)用于存儲(chǔ)嵌套的文檔結(jié)構(gòu),如{x:{b:"c",d:"e"}}ObjectId(對(duì)象標(biāo)識(shí)符)用于存儲(chǔ)文檔的唯一標(biāo)識(shí)符,如{x:ObjectId()}BinaryData(二進(jìn)制數(shù)據(jù))用于存儲(chǔ)二進(jìn)制數(shù)據(jù),如圖像、音頻等任務(wù)實(shí)施
任務(wù)分析采用副本集模式部署MongoDB需要在3臺(tái)主機(jī)上分別安裝并配置MongoDB;然后配置MongoDB副本集。
實(shí)施步驟采用副本集模式
部署MongoDB任務(wù)實(shí)施
實(shí)施步驟1、安裝并配置MongoDB步驟1啟動(dòng)Master主機(jī)的瀏覽器,訪問(wèn)MongoDB官方下載網(wǎng)站(/try/download/community-edition/releases/archive),在打開(kāi)的歷史版本頁(yè)面中按“Ctrl+F”組合鍵,查找“mongodb-linux-x86_64-rhel80-6.0.15.tgz”;然后單擊“mongodb-linux-x86_64-rhel80-6.0.15.tgz”鏈接文字,下載MongoDB安裝文件。
單擊下載鏈接文字小提示本教材使用的是“RedHatEnterpriseLinux8.7.064”Linux操作系統(tǒng),因此平臺(tái)選擇“RedHat/CentOS8.0x64”。任務(wù)實(shí)施步驟2小提示自MongoDB5.0版本開(kāi)始,MongoDB的安裝文件中不再包含傳統(tǒng)的MongoDBShell。要想使用MongoDBShell操作數(shù)據(jù)庫(kù),需要下載Mongosh。Mongosh是MongoDBShell的新一代版本,提供了更豐富的功能和更好的用戶體驗(yàn)。訪問(wèn)“/mongodb-js/mongosh/releases”,在打開(kāi)的歷史版本頁(yè)面中單擊“2.2.3”鏈接文字;然后在打開(kāi)的頁(yè)面中單擊“mongosh-2.2.3-linux-x64.tgz”鏈接文字,下載MongoDBShell安裝文件。下載MongoDBShell安裝文件任務(wù)實(shí)施啟動(dòng)Master主機(jī)的終端,執(zhí)行如下命令,將MongoDB安裝文件解壓到“/usr/local”目錄中;然后將“mongodb-linux-x86_64-rhel80-6.0.15”目錄重命名為“mongodb”;最后將該目錄的所有權(quán)限賦予hadoop用戶。步驟3[hadoop@Master~]$sudotar-zxf~/下載/mongodb-linux-x86_64-rhel80-6.0.15.tgz-C/usr/local[hadoop@Master~]$cd/usr/local[hadoop@Masterlocal]$sudomvmongodb-linux-x86_64-rhel80
-6.0.15mongodb[hadoop@Masterlocal]$sudochown-Rhadoop./mongodb任務(wù)實(shí)施在Master主機(jī)上執(zhí)行如下命令,將MongoDBShell安裝文件解壓到“/usr/local/mongodb”目錄中;然后將“mongosh-2.2.3-linux-x64”目錄重命名為“mongosh”。[hadoop@Masterlocal]$sudotar-zxf~/下載/mongosh-2.2.3-linux-x64.tgz-C/usr/local/mongodb[hadoop@Masterlocal]$sudomv./mongodb/mongosh-2.2.3-linux-x64
./mongodb/mongosh步驟4在Master主機(jī)上執(zhí)行如下命令,打開(kāi)“.bashrc”配置文件;然后在文件首行添加如下配置信息;最后保存并關(guān)閉配置文件。步驟5[hadoop@Masterlocal]$sudovim~/.bashrc#配置信息exportMONGODB_HOME=/usr/local/mongodbexportPATH=$PATH:$MONGODB_HOME/binexportMONGOSH_HOME=/usr/local/mongodb/mongoshexportPATH=$PATH:$MONGOSH_HOME/bin任務(wù)實(shí)施在Master主機(jī)上執(zhí)行如下命令,使配置信息生效。[hadoop@Masterlocal]$source~/.bashrc步驟6分別在Worker1和Worker2主機(jī)上執(zhí)行步驟5和步驟6。步驟7在Master主機(jī)上執(zhí)行如下命令,創(chuàng)建不同的目錄用于存放MongoDB的數(shù)據(jù)文件、日志文件和配置文件。步驟8[hadoop@Masterlocal]$cdmongodb#創(chuàng)建數(shù)據(jù)文件目錄、日志文件目錄[hadoop@Mastermongodb]$mkdirdatalog[hadoop@Mastermongodb]$mkdir–pbin/conf #創(chuàng)建配置文件目錄任務(wù)實(shí)施在Master主機(jī)上執(zhí)行如下命令,在配置文件目錄下創(chuàng)建并打開(kāi)“mongod.conf”配置文件;然后在文件首行添加如下配置信息;最后保存并關(guān)閉配置文件。步驟9[hadoop@Mastermongodb]$cdbin/conf[hadoop@Masterconf]$sudovimmongod.conf #配置信息dbpath=/usr/local/mongodb/data #數(shù)據(jù)存放路徑logpath=/usr/local/mongodb/log/mongod.log #日志文件路徑port=27017 #端口號(hào)logappend=true #日志以追加的方式寫(xiě)入日志文件fork=true #以后臺(tái)的方式運(yùn)行MongoDBmaxConns=5000 #最大連接數(shù)storageEngine=wiredTiger #存儲(chǔ)引擎replSet=master #副本集名稱shardsvr=true #啟用分片功能bind_ip= #允許任意機(jī)器連接任務(wù)實(shí)施在Master主機(jī)上執(zhí)行如下命令,將MongoDB安裝目錄分別復(fù)制到Worker1和Worker2主機(jī)的相應(yīng)目錄中。復(fù)制過(guò)程中,根據(jù)提示信息輸入Worker1或Worker2主機(jī)的密碼。#復(fù)制到Worker1主機(jī)[hadoop@Masterconf]$scp-r/usr/local/mongodbWorker1:/usr/local#復(fù)制到Worker2主機(jī)[hadoop@Masterconf]$scp-r/usr/local/mongodbWorker2:/usr/local步驟10[hadoop@Worker1~]$sudochown-Rhadoop/usr/local/mongodb分別在Worker1和Worker2主機(jī)上打開(kāi)“myid”配置文件;然后將文件中首行的內(nèi)容分別修改為2和3。步驟11任務(wù)實(shí)施2、配置MongoDB副本集步驟1在Worker1和Worker2主機(jī)上分別打開(kāi)“/usr/local/mongodb/bin/conf/mongod.conf”文件,將該文件中的port參數(shù)值分別修改為27018和27019。
MongoDB服務(wù)啟動(dòng)成功的信息在3臺(tái)主機(jī)上分別執(zhí)行如下命令,啟動(dòng)MongoDB服務(wù)。若出現(xiàn)“childprocessstartedsuccessfully,parentexiting”提示信息,則證明MongoDB服務(wù)啟動(dòng)成功。步驟2[hadoop@Masterconf]$mongod--config/usr/local/mongodb/bin/
conf/mongod.conf任務(wù)實(shí)施在Master主機(jī)上執(zhí)行如下命令,啟動(dòng)MongoDBShell。啟動(dòng)過(guò)程中需要安裝“mongodb-org-shell”,根據(jù)提示信息輸入“y”即可。若出現(xiàn)“test>”提示符,則證明MongoDBShell啟動(dòng)成功。步驟3[hadoop@Masterconf]$mongosh1:27017MongoDBShell啟動(dòng)成功的界面小提示將“mongosh1:27017”命令中的“1”修改為主機(jī)名Master同樣可以啟動(dòng)MongoDBShell。任務(wù)實(shí)施步驟4在MongoDBShell中執(zhí)行如下語(yǔ)句,添加副本集成員。test>useadminadmin>mongo_number={_id:"master",members:[
{_id:0,host:'1:27017',priority:3},{_id:1,host:'2:27018',priority:2},{_id:2,host:'3:27019',priority:1}]};MongoDB副本集成員“mongo_number”為變量名,可以隨意變化,但不能與MongoDB的關(guān)鍵字重復(fù);“_id”字段用于指定副本集的名稱;“members”字段是一個(gè)數(shù)組,包含了副本集成員的信息;每個(gè)成員都有一個(gè)唯一的標(biāo)識(shí)符、IP地址和優(yōu)先級(jí),優(yōu)先級(jí)對(duì)應(yīng)的數(shù)字越大表示優(yōu)先級(jí)越高,優(yōu)先級(jí)最高的節(jié)點(diǎn)為主節(jié)點(diǎn)。高手點(diǎn)拔任務(wù)實(shí)施執(zhí)行如下語(yǔ)句,初始化副本集。步驟5admin>rs.initiate(mongo_number)執(zhí)行如下語(yǔ)句,查看副本集中的成員狀態(tài)。步驟6admin>rs.status()執(zhí)行如下語(yǔ)句,退出MongoDBShell。步驟7admin>exit副本集中的成員狀態(tài)(部分)使用MongoDBShell操作網(wǎng)站數(shù)據(jù)任務(wù)二現(xiàn)有網(wǎng)站數(shù)據(jù)文件“http.txt”,其中包含手機(jī)號(hào)碼(phone_num)和請(qǐng)求網(wǎng)站的鏈接(web)兩個(gè)字段的信息,如圖所示。其中,字段間的分隔符是由Tab鍵輸入的制表符。網(wǎng)站數(shù)據(jù)可以反映用戶的上網(wǎng)習(xí)慣和興趣偏好,操作網(wǎng)站數(shù)據(jù)可以幫助網(wǎng)站平臺(tái)保存用戶數(shù)據(jù)、優(yōu)化網(wǎng)站設(shè)計(jì)、洞察用戶需求等。在使用MongoDBShell操作網(wǎng)站數(shù)據(jù)之前,我們先來(lái)學(xué)習(xí)一下在MongoDB中數(shù)據(jù)庫(kù)、集合和文檔的基本操作。“http.txt”數(shù)據(jù)文件的內(nèi)容任務(wù)準(zhǔn)備問(wèn)題1:簡(jiǎn)述MongoDB中數(shù)據(jù)庫(kù)的命名規(guī)則。全班學(xué)生以3~5人為一組進(jìn)行分組,各組選出組長(zhǎng)。組長(zhǎng)組織組員掃碼觀看“MongoDB的命名規(guī)則”視頻,討論并回答下列問(wèn)題。問(wèn)題2:簡(jiǎn)述MongoDB中集合和文檔的命名規(guī)則。MongoDB的命名規(guī)則一、數(shù)據(jù)庫(kù)的基本操作數(shù)據(jù)庫(kù)的基本操作創(chuàng)建/切換查看狀態(tài)顯示刪除一、數(shù)據(jù)庫(kù)的基本操作使用use關(guān)鍵字可以創(chuàng)建或切換數(shù)據(jù)庫(kù),其語(yǔ)法格式如下。當(dāng)數(shù)據(jù)庫(kù)不存在時(shí),使用use關(guān)鍵字可以創(chuàng)建并切換數(shù)據(jù)庫(kù);當(dāng)數(shù)據(jù)庫(kù)已經(jīng)存在時(shí),使用use關(guān)鍵字只可以切換數(shù)據(jù)庫(kù)。use數(shù)據(jù)庫(kù)名1、創(chuàng)建/切換數(shù)據(jù)庫(kù)2、查看數(shù)據(jù)庫(kù)的狀態(tài)查看數(shù)據(jù)庫(kù)的狀態(tài)能夠獲取數(shù)據(jù)庫(kù)的名稱、集合數(shù)量、對(duì)象數(shù)量、存儲(chǔ)空間使用情況等信息。使用db.stats()方法可以查看數(shù)據(jù)庫(kù)的狀態(tài),其語(yǔ)法格式如下。db.stats()一、數(shù)據(jù)庫(kù)的基本操作使用showdbs關(guān)鍵字可以顯示MongoDB中的所有數(shù)據(jù)庫(kù),其語(yǔ)法格式如下。需要注意的是,如果數(shù)據(jù)庫(kù)中沒(méi)有任何集合,那么該數(shù)據(jù)庫(kù)不會(huì)顯示出來(lái)。showdbs3、顯示數(shù)據(jù)庫(kù)MongoDB數(shù)據(jù)庫(kù)中本身包含4個(gè)數(shù)據(jù)庫(kù),分別為admin、config、local和test。其中,admin是MongoDB的管理數(shù)據(jù)庫(kù),用于管理用戶、角色等信息;config是MongoDB的配置數(shù)據(jù)庫(kù),用于存儲(chǔ)分片集群的配置信息;local是MongoDB的本地?cái)?shù)據(jù)庫(kù),用于存儲(chǔ)副本集的元數(shù)據(jù);test是MongoDB的默認(rèn)數(shù)據(jù)庫(kù),用于測(cè)試環(huán)境。高手點(diǎn)拔刪除數(shù)據(jù)庫(kù)之前,需要先切換至該數(shù)據(jù)庫(kù)。使用db.dropDatabase()方法可以刪除當(dāng)前數(shù)據(jù)庫(kù),其語(yǔ)法格式如下。db.dropDatabase()4、刪除數(shù)據(jù)庫(kù)MongoDB數(shù)據(jù)庫(kù)中本身包含哪幾個(gè)數(shù)據(jù)庫(kù)?一、數(shù)據(jù)庫(kù)的基本操作例4-1步驟1test>useMongoTest操作數(shù)據(jù)庫(kù)MongoTest。執(zhí)行如下語(yǔ)句,創(chuàng)建并切換至數(shù)據(jù)庫(kù)MongoTest。步驟2MongoTest>showdbs執(zhí)行如下語(yǔ)句,顯示所有數(shù)據(jù)庫(kù),結(jié)果如圖所示。數(shù)據(jù)庫(kù)MongoTest中沒(méi)有任何集合,所以不會(huì)顯示出來(lái)。所有數(shù)據(jù)庫(kù)一、數(shù)據(jù)庫(kù)的基本操作步驟3MongoTest>db.stats()執(zhí)行如下語(yǔ)句,查看數(shù)據(jù)庫(kù)MongoTest的狀態(tài)。步驟4MongoTest>db.dropDatabase()執(zhí)行如下語(yǔ)句,刪除數(shù)據(jù)庫(kù)MongoTest。小提示在執(zhí)行數(shù)據(jù)庫(kù)和集合的相關(guān)操作時(shí),需要先切換至目標(biāo)數(shù)據(jù)庫(kù)和集合,然后再執(zhí)行相應(yīng)的操作。數(shù)據(jù)庫(kù)MongoTest的狀態(tài)二、集合的基本操作集合的基本操作創(chuàng)建顯示查看重命名刪除二、集合的基本操作使用db.createCollection()方法可以創(chuàng)建集合,其語(yǔ)法格式如下。db.createCollection("集合名",{capped:布爾值,size:容量上限值,max:文檔數(shù)量的上限值})1、創(chuàng)建集合上述語(yǔ)法格式的詳細(xì)解釋如下。capped:可選參數(shù),用于指定創(chuàng)建的集合是否為固定大小的集合。當(dāng)該參數(shù)值為true時(shí),表示創(chuàng)建集合的大小固定,必須指定size和max參數(shù)的值;當(dāng)該參數(shù)值為false(默認(rèn)值)時(shí),表示創(chuàng)建集合的大小不固定,不需要添加size和max參數(shù)。size:可選參數(shù),用于指定固定大小集合的容量上限值。max:可選參數(shù),用于指定固定大小集合中文檔數(shù)量的上限值。二、集合的基本操作使用showcollections關(guān)鍵字或db.getCollectionNames()方法可以顯示當(dāng)前數(shù)據(jù)庫(kù)中的所有集合,其語(yǔ)法格式如下。showcollections #方式一db.getCollectionNames() #方式二,以列表的形式顯示集合名稱2、顯示集合集合的信息包括集合的名稱、類型和參數(shù)等信息。使用db.getCollectionInfos()方法可以查看當(dāng)前數(shù)據(jù)庫(kù)中所有集合的信息,其語(yǔ)法格式如下。db.getCollectionInfos()3、查看集合信息使用renameCollection()方法可以重命名集合,其語(yǔ)法格式如下。db.舊的集合名.renameCollection("新的集合名")4、重命名集合信息二、集合的基本操作使用drop()方法可以刪除指定集合,其語(yǔ)法格式如下。db.集合名.drop()5、刪除集合例4-2步驟1MongoTest>useStudentTest操作數(shù)據(jù)庫(kù)StudentTest中的集合。執(zhí)行如下語(yǔ)句,創(chuàng)建并切換至數(shù)據(jù)庫(kù)StudentTest。步驟2StudentTest>db.createCollection("student")執(zhí)行如下語(yǔ)句,創(chuàng)建集合student。二、集合的基本操作步驟3StudentTest>db.createCollection("Student",{capped:true,size:5242880,max:5000})執(zhí)行如下語(yǔ)句,創(chuàng)建集合Student。步驟4StudentTest>showcollections執(zhí)行如下語(yǔ)句,顯示數(shù)據(jù)庫(kù)StudentTest中的所有集合。數(shù)據(jù)庫(kù)StudentTest中的所有集合小提示在MongoDBShell中,集合名是區(qū)分大小寫(xiě)的,所以student和Student是兩個(gè)不同的集合。二、集合的基本操作步驟5StudentTest>db.getCollectionInfos()執(zhí)行如下語(yǔ)句,查看數(shù)據(jù)庫(kù)StudentTest中所有集合的信息。StudentTest>db.teacher.drop()步驟6StudentTest>db.Student.renameCollection("teacher")執(zhí)行如下語(yǔ)句,將集合Student重命名為teacher。步驟7執(zhí)行如下語(yǔ)句,刪除集合teacher。數(shù)據(jù)庫(kù)StudentTest中所有集合的信息三、文檔的基本操作文檔的基本操作插入查詢更新刪除聚合三、文檔的基本操作db.集合名.insertOne(<文檔對(duì)象>,{writeConcern:<參數(shù)對(duì)象>,bypassDocumentValidation:布爾值
})1、插入文檔(1)使用insertOne()方法一次只能向集合中插入一個(gè)文檔,其語(yǔ)法格式如下。上述語(yǔ)法格式的詳細(xì)解釋如下。文檔對(duì)象:表示要插入的實(shí)際文檔。writeConcern:可選參數(shù),用于指定操作的安全級(jí)別。小提示writeConcern的參數(shù)對(duì)象中包含3個(gè)參數(shù),分別為w、j和wtimeout。①w為可選參數(shù),當(dāng)參數(shù)值為數(shù)值時(shí),表示至少需要w個(gè)節(jié)點(diǎn)確認(rèn)操作已完成;當(dāng)參數(shù)值為majority時(shí),表示需要大多數(shù)節(jié)點(diǎn)確認(rèn)操作已完成。②j為可選參數(shù),當(dāng)參數(shù)值為true時(shí),保證操作的持久性;當(dāng)參數(shù)值為false(默認(rèn)值)時(shí),不保證操作的持久性。③wtimeout為可選參數(shù),用于指定操作的超時(shí)時(shí)間(以毫秒為單位)。三、文檔的基本操作db.集合名.insertOne(<文檔對(duì)象>,{writeConcern:<參數(shù)對(duì)象>,bypassDocumentValidation:布爾值
})1、插入文檔bypassDocumentValidation:可選參數(shù),用于指定是否繞過(guò)文檔驗(yàn)證。當(dāng)該參數(shù)值為false(默認(rèn)值)時(shí),表示不繞過(guò)文檔驗(yàn)證,即不允許插入不符合集合驗(yàn)證規(guī)則的文檔;當(dāng)該參數(shù)為true時(shí),表示繞過(guò)文檔驗(yàn)證。(1)使用insertOne()方法一次只能向集合中插入一個(gè)文檔,其語(yǔ)法格式如下。三、文檔的基本操作db.集合名.insertMany([<文檔對(duì)象1>,<文檔對(duì)象2>…],
{writeConcern:<參數(shù)對(duì)象>,bypassDocumentValidation:布爾值,ordered:布爾值
})(2)使用insertMany()方法一次可以向集合中插入多個(gè)文檔,其語(yǔ)法格式如下。ordered:可選參數(shù),用于指定在插入過(guò)程中某個(gè)文檔出現(xiàn)錯(cuò)誤時(shí)是否停止插入操作。當(dāng)該參數(shù)值為false(默認(rèn)值)時(shí),表示停止插入操作;當(dāng)該參數(shù)值為true時(shí),表示不停止插入操作。三、文檔的基本操作例4-3步驟1StudentTest>db.student.insertOne( {name:"Lily",sex:"female",city:"beijing", course:["computer","math"],score:98})向數(shù)據(jù)庫(kù)StudentTest的集合student中插入文檔。執(zhí)行如下語(yǔ)句,使用insertOnt()方法向集合student中插入一個(gè)文檔。步驟2StudentTest>db.student.insertMany([ {name:"Tom",sex:"male",city:"shanghai",score:77}, {name:"Bob",sex:"male",city:"guangzhou",score:90}], { writeConcern:{w:"majority",j:true,wtimeout:1000}, ordered:true })執(zhí)行如下語(yǔ)句,使用insertMany()方法向集合student中插入多個(gè)文檔。三、文檔的基本操作2、查詢文檔(1)使用findOne()方法可以查詢集合中符合條件的第一個(gè)文檔,其語(yǔ)法格式如下。db.集合名.findOne(<查詢條件>,<投影操作>)其中,查詢條件為可選參數(shù),默認(rèn)為{},表示匹配所有文檔,查詢條件中常用的條件操作符如表所示;投影操作為可選參數(shù),用于指定返回結(jié)果中包含或排除的字段,默認(rèn)返回所有字段。操作符類型操作符說(shuō)明操作符類型操作符說(shuō)明比較操作符$eq等于邏輯操作符$and邏輯與$ne不等于$or邏輯或$gt大于$not邏輯非三、文檔的基本操作2、查詢文檔db.集合名.findOne(<查詢條件>,<投影操作>)其中,查詢條件為可選參數(shù),默認(rèn)為{},表示匹配所有文檔,查詢條件中常用的條件操作符如表所示;投影操作為可選參數(shù),用于指定返回結(jié)果中包含或排除的字段,默認(rèn)返回所有字段。操作符類型操作符說(shuō)明操作符類型操作符說(shuō)明比較操作符$gte大于等于元素操作符$exists檢查字段是否存在,返回所有包含該字段的文檔$type檢查字段類型$lt小于$lte小于等于數(shù)組操作符$all匹配包含所有指定元素的數(shù)組$in包含在數(shù)組中正則表達(dá)式操作符$regex使用正則表達(dá)式進(jìn)行匹配$nin不包含在數(shù)組中———(1)使用findOne()方法可以查詢集合中符合條件的第一個(gè)文檔,其語(yǔ)法格式如下。三、文檔的基本操作(2)使用find()方法可以查詢集合中符合條件的所有文檔,其語(yǔ)法格式如下。db.集合名.find(<查詢條件>,<投影操作>)MongoDB還提供了一些附加的方法,用于對(duì)查詢結(jié)果進(jìn)行進(jìn)一步操作。常用的附加方法如下。①sort():對(duì)查詢結(jié)果進(jìn)行排序。②limit():限制返回的文檔數(shù)量。③count():統(tǒng)計(jì)符合查詢條件的文檔數(shù)量。④toArray():將查詢結(jié)果轉(zhuǎn)換為數(shù)組。⑤pretty():以易讀的格式輸出查詢結(jié)果。⑥forEach():對(duì)查詢結(jié)果中的每個(gè)文檔執(zhí)行指定的JavaScript函數(shù),主要用于對(duì)查詢結(jié)果進(jìn)行迭代處理。高手點(diǎn)拔MongoDB提供了哪些附加的方法?三、文檔的基本操作例4-4步驟1StudentTest>db.student.find()查詢數(shù)據(jù)庫(kù)StudentTest的集合student中的文檔。執(zhí)行如下語(yǔ)句,查詢集合student中的所有文檔。步驟2StudentTest>db.student.find({name:"Lily"})執(zhí)行如下語(yǔ)句,查詢集合student中name字段值為L(zhǎng)ily的文檔。集合student中的所有文檔集合student中name字段值為L(zhǎng)ily的文檔二、文檔的基本操作步驟3StudentTest>db.student.find({course:{$exists:true}})執(zhí)行如下語(yǔ)句,查詢集合student中包含course字段的文檔。步驟4StudentTest>db.student.find().limit(2)執(zhí)行如下語(yǔ)句,查詢集合student中的前兩個(gè)文檔。集合student中包含course字段的文檔集合student中的前兩個(gè)文檔二、文檔的基本操作步驟5StudentTest>db.student.find({score:{$gt:80}})執(zhí)行如下語(yǔ)句,查詢集合student中score字段值大于80的文檔。步驟6StudentTest>db.student.find({sex:"male"}).sort({score:1})執(zhí)行如下語(yǔ)句,查詢集合student中sex字段值為male的文檔,并按照score字段升序排列,語(yǔ)句中,“1”表示升序排序,如果需要降序排序,則使用“–1”。查詢并排序后的文檔集合student中score字段值大于80的文檔三、文檔的基本操作3、更新文檔(1)使用updateOne()方法可以更新集合中符合條件的第一個(gè)文檔,其語(yǔ)法格式如下。db.集合名.updateOne(<更新條件>,<更新操作>,{upsert:布爾值,writeConcern:<參數(shù)對(duì)象>})上述語(yǔ)法格式的詳細(xì)解釋如下。更新條件:用于匹配要更新的文檔。更新操作:用于指定要對(duì)匹配到的文檔進(jìn)行的更新操作,包含更新操作符和更新內(nèi)容。常用的更新操作符如表所示。三、文檔的基本操作3、更新文檔(1)使用updateOne()方法可以更新集合中符合條件的第一個(gè)文檔,其語(yǔ)法格式如下。db.集合名.updateOne(<更新條件>,<更新操作>,{upsert:布爾值,writeConcern:<參數(shù)對(duì)象>})操作符描述操作符描述$set設(shè)置指定字段的值$push向數(shù)組字段中添加新元素$unset刪除指定字段$pull從數(shù)組字段中刪除指定元素$inc遞增指定字段的值——三、文檔的基本操作3、更新文檔(1)使用updateOne()方法可以更新集合中符合條件的第一個(gè)文檔,其語(yǔ)法格式如下。db.集合名.updateOne(<更新條件>,<更新操作>,{upsert:布爾值,writeConcern:<參數(shù)對(duì)象>})upsert:可選參數(shù),用于指定如果沒(méi)有匹配的文檔時(shí)是否插入新的文檔。當(dāng)該參數(shù)值為false(默認(rèn)值)時(shí),表示不插入新文檔;當(dāng)該參數(shù)值為true時(shí),表示插入新文檔。三、文檔的基本操作(2)使用updateMany()方法可以更新集合中符合條件的所有文檔,其語(yǔ)法格式如下。db.集合名.updateMany(<更新條件>,<更新操作>,{upsert:布爾值,writeConcern:<參數(shù)對(duì)象>})三、文檔的基本操作步驟1StudentTest>db.student.updateOne( {sex:"male"}, {$set:{score:87}})執(zhí)行如下語(yǔ)句,將sex字段值為male的第一個(gè)文檔中的score字段值更新為87。例4-5更新數(shù)據(jù)庫(kù)StudentTest的集合student中的文檔。步驟2StudentTest>db.student.updateMany( {sex:"male"}, {$set:{city:"hangzhou"}})執(zhí)行如下語(yǔ)句,將sex字段值為male的所有文檔中的city字段值更新為hangzhou。三、文檔的基本操作步驟3StudentTest>db.student.updateOne( {name:"Lily"}, {$push:{course:"English"}})執(zhí)行如下語(yǔ)句,向name字段值為L(zhǎng)ily的第一個(gè)文檔的course字段中插入一個(gè)元素。步驟4StudentTest>db.student.updateOne( {name:"Jack"}, {$set:{city:"henan"}}, {upsert:true})執(zhí)行如下語(yǔ)句,將name字段值為Jack的第一個(gè)文檔中的city字段值更新為henan。三、文檔的基本操作步驟5StudentTest>db.student.find()執(zhí)行如下語(yǔ)句,查詢集合student中的所有文檔。集合student中的所有文檔三、文檔的基本操作4、刪除文檔(1)使用deleteOne()方法可以刪除集合中符合條件的第一個(gè)文檔,其語(yǔ)法格式如下。db.集合名.deleteOne(<刪除條件>,{maxTimeMS:最長(zhǎng)執(zhí)行時(shí)間
})上述語(yǔ)法格式的詳細(xì)解釋如下。刪除條件:用于指定刪除文檔的條件。maxTimeMS:可選參數(shù),用于指定操作的超時(shí)時(shí)間(以毫秒為單位)。三、文檔的基本操作(2)使用deleteMany()方法可以刪除集合中符合條件的所有文檔,其語(yǔ)法格式如下。db.集合名.deleteMany(<刪除條件>,{maxTimeMS:最長(zhǎng)執(zhí)行時(shí)間,writeConcern:<參數(shù)對(duì)象>,collation:<排序規(guī)則>})collation:可選參數(shù),用于指定執(zhí)行字符串比較時(shí)使用的排序規(guī)則。三、文檔的基本操作步驟1StudentTest>db.student.deleteOne({name:"Bob"})執(zhí)行如下語(yǔ)句,刪除集合student中name字段值為Bob的第一個(gè)文檔。例4-6刪除數(shù)據(jù)庫(kù)StudentTest的集合student中的文檔。步驟2StudentTest>db.student.deleteMany({sex:"female"})執(zhí)行如下語(yǔ)句,刪除集合student中sex字段值為female的所有文檔。三、文檔的基本操作5、聚合文檔在MongoDB中,聚合文檔主要是指對(duì)文檔進(jìn)行分組、篩選、投影和計(jì)算等操作。使用aggregate()方法可以對(duì)文檔進(jìn)行聚合操作,其語(yǔ)法格式如下。db.集合名.aggregate(<聚合操作>)聚合操作中可以使用管道操作符、聚合操作符和比較操作符等進(jìn)行不同的操作。常見(jiàn)的管道操作符和聚合操作符如表所示。操作符描述操作符描述$sort將輸出結(jié)果排序$limit限制返回的文檔數(shù)量$group將集合中的文檔分組,可用于統(tǒng)計(jì)結(jié)果$skip略過(guò)指定數(shù)量的文檔,并返回剩余的文檔$match用于過(guò)濾數(shù)據(jù),只輸出符合條件的文檔$unwind將文檔中的某一個(gè)數(shù)組類型的鍵值拆分成多個(gè)文檔,每個(gè)文檔包含數(shù)組中的一個(gè)元素三、文檔的基本操作5、聚合文檔在MongoDB中,聚合文檔主要是指對(duì)文檔進(jìn)行分組、篩選、投影和計(jì)算等操作。使用aggregate()方法可以對(duì)文檔進(jìn)行聚合操作,其語(yǔ)法格式如下。db.集合名.aggregate(<聚合操作>)聚合操作中可以使用管道操作符、聚合操作符和比較操作符等進(jìn)行不同的操作。常見(jiàn)的管道操作符和聚合操作符如表所示。操作符描述操作符描述$sum計(jì)算總和$max返回最大值$avg計(jì)算平均值$push將數(shù)值插入一個(gè)數(shù)組中$min返回最小值$first/$last將文檔排序后,返回第一個(gè)或最后一個(gè)文檔數(shù)據(jù)三、文檔的基本操作步驟1#集合info在插入文檔前沒(méi)有創(chuàng)建,所以在插入文檔時(shí)系統(tǒng)會(huì)先自動(dòng)創(chuàng)建集合infoStudentTest>.insert([ {name:"Tom",sex:"male",grade:90}, {name:"Bob",sex:"male",grade:100}, {name:"Lily",sex:"female",grade:88}, {name:"Lisa",sex:"female",grade:95}, {name:"Jack",sex:"female",grade:75}])執(zhí)行如下語(yǔ)句,向集合info中插入文檔。例4-7對(duì)數(shù)據(jù)庫(kù)StudentTest的集合info中的文檔進(jìn)行聚合。三、文檔的基本操作步驟2StudentTest>.aggregate( {$group:{_id:"$sex",avg_grade:{$avg:"$grade"}}})執(zhí)行如下語(yǔ)句,計(jì)算不同性別學(xué)生的平均成績(jī)。不同性別學(xué)生的平均成績(jī)?cè)贛ongoDB的聚合管道操作中,$符號(hào)通常用于引用指定的字段或特定的操作符。高手點(diǎn)拔任務(wù)實(shí)施
任務(wù)分析操作網(wǎng)站數(shù)據(jù)之前,首先需要?jiǎng)?chuàng)建數(shù)據(jù)庫(kù)和集合;然后將圖中的數(shù)據(jù)插入集合中,并根據(jù)需要更新、查詢、刪除和聚合文檔。
實(shí)施步驟使用MongoDBShell
操作網(wǎng)站數(shù)據(jù)任務(wù)實(shí)施
實(shí)施步驟1、創(chuàng)建數(shù)據(jù)庫(kù)和集合步驟1在3臺(tái)主機(jī)上啟動(dòng)MongoDB服務(wù);然后在Master主機(jī)上啟動(dòng)MongoDBShell。test>useweb步驟2執(zhí)行如下語(yǔ)句,創(chuàng)建并切換至數(shù)據(jù)庫(kù)web。web>showdbs步驟3執(zhí)行如下語(yǔ)句,顯示所有數(shù)據(jù)庫(kù)。若顯示的數(shù)據(jù)庫(kù)中含有web,則證明數(shù)據(jù)庫(kù)web創(chuàng)建成功。web>db.createCollection("http_logs")步驟4執(zhí)行如下語(yǔ)句,創(chuàng)建集合http_logs。任務(wù)實(shí)施
實(shí)施步驟2、操作文檔步驟1執(zhí)行如下語(yǔ)句,向集合http_logs中插入文檔。web>db.http_logs.insertMany([{phone_num:"156****0688",web:""},{phone_num:"151****6948",web:""},{phone_num:"145****6218",web:"/tv"},{phone_num:"173****7739",web:"/?category=7"},{phone_num:"145****7796",web:"/tv"},{phone_num:"137****1795",web:"/?category=1760"},{phone_num:"183****1914",web:""},{phone_num:"152****7988",web:"http:///article/
details/47444699"},步驟5執(zhí)行如下語(yǔ)句,顯示數(shù)據(jù)庫(kù)web中的所有集合。若顯示的集合中含有http_logs,則證明集合http_logs創(chuàng)建成功。web>showcollections任務(wù)實(shí)施
實(shí)施步驟2、操作文檔步驟1執(zhí)行如下語(yǔ)句,向集合http_logs中插入文檔。
{phone_num:"185****6476",web:"/question/
1430480451137504979.html"},{phone_num:"159****0636",web:""},
{phone_num:"185****6220",web:"/?category=7"},{phone_num:"183****1914",web:""},
{phone_num:"152****7988",web:"/article/
details/47444699"},{phone_num:"185****6476",web:"/question/
1430480451137504979.html"},步驟5執(zhí)行如下語(yǔ)句,顯示數(shù)據(jù)庫(kù)web中的所有集合。若顯示的集合中含有http_logs,則證明集合http_logs創(chuàng)建成功。web>showcollections任務(wù)實(shí)施
實(shí)施步驟2、操作文檔步驟1執(zhí)行如下語(yǔ)句,向集合http_logs中插入文檔。
{phone_num:"159****0636",web:""},{phone_num:"185****6220",web:"/?category=7"},{phone_num:"136****5557",web:""},{phone_num:"147****4152",web:"/?category=7"},{phone_num:"137****6226",web:"/article/
details/47444699"},{phone_num:"153****0194",web:"/tv"}])
步驟5執(zhí)行如下語(yǔ)句,顯示數(shù)據(jù)庫(kù)web中的所有集合。若顯示的集合中含有http_logs,則證明集合http_logs創(chuàng)建成功。web>showcollections任務(wù)實(shí)施
實(shí)施步驟步驟3執(zhí)行如下語(yǔ)句,統(tǒng)計(jì)訪問(wèn)次數(shù)排名前5的網(wǎng)址。web>db.http_logs.aggregate([{$group:{_id:"$web",count:{$sum:1}}},{$sort:{count:-1}},{$limit:5}])步驟2執(zhí)行如下語(yǔ)句,查詢集合http_logs中的文檔,驗(yàn)證文檔插入是否成功。web>db.http_logs.find()訪問(wèn)次數(shù)排名前5的網(wǎng)址任務(wù)實(shí)施
實(shí)施步驟步驟5執(zhí)行如下語(yǔ)句,將集合http_logs中phone_num字段值為“137****6226”的第一個(gè)文檔中的web字段值更新為“/article”。web>db.http_logs.updateOne( {name:"137****6226"}, {$set:{web:"/article"}})步驟4執(zhí)行如下語(yǔ)句,統(tǒng)計(jì)訪問(wèn)圖片(image)網(wǎng)站的用戶數(shù)量。web>db.http_logs.aggregate([ {$match:{web:{$regex:"image"}}}, {$group:{_id:null,user_count:{$sum:1}}} ])訪問(wèn)圖片網(wǎng)站的用戶數(shù)量任務(wù)實(shí)施
實(shí)施步驟步驟7執(zhí)行如下語(yǔ)句,刪除集合http_logs中web字段值包含movie的第一個(gè)文檔。web>db.http_logs.deleteOne({web:{$regex:"movie"}})步驟6執(zhí)行如下語(yǔ)句,將集合http_logs中的web字段值“/tv”全部更新為“/tv”。web>db.http_logs.updateMany({web:"/tv"},{$set:{web:"/tv"}})使用MongoDBJavaAPI操作網(wǎng)站數(shù)據(jù)任務(wù)三MongoDBJavaAPI是一套允許開(kāi)發(fā)者使用Java編程語(yǔ)言與MongoDB數(shù)據(jù)庫(kù)進(jìn)行交互的接口和工具集。使用MongoDBJavaAPI可以讓開(kāi)發(fā)者更靈活、高效地進(jìn)行數(shù)據(jù)庫(kù)操作。在使用MongoDBJavaAPI操作網(wǎng)站數(shù)據(jù)之前,我們先來(lái)學(xué)一下MongoDBJavaAPI的基礎(chǔ)知識(shí),以及使用它操作數(shù)據(jù)庫(kù)、集合和文檔的基本步驟和常用方法。任務(wù)準(zhǔn)備問(wèn)題1:簡(jiǎn)述可視化管理工具的作用。全班學(xué)生以3~5人為一組,各組選出組長(zhǎng)。組長(zhǎng)組織組員掃碼觀看“MongoDB的可視化管理工具”視頻,討論并回答下列問(wèn)題。問(wèn)題2:簡(jiǎn)述常用的MongoDB可視化管理工具。MongoDB的
可視化管理工具一、MongoDBJavaAPI概述使用JavaAPI操作HBase前,須先安裝并配置Java集成開(kāi)發(fā)環(huán)境。目前較為常用的Java集成開(kāi)發(fā)環(huán)境為IntelliJIDEA(以下簡(jiǎn)稱IDEA),它提供了豐富的功能和工具,可以幫助開(kāi)發(fā)者更加高效地編寫(xiě)和管理Java應(yīng)用程序。下面介紹如何在IDEA的Java項(xiàng)目中添加訪問(wèn)MongoDB的相關(guān)依賴包。步驟1步驟2<dependencies><dependency><groupId>org.mongodb</groupId><artifactId>mongodb-driver-sync</artifactId><version>5.0.0</version><!--通常選擇最新版本--></dependency></dependencies>啟動(dòng)IDEA,新建項(xiàng)目MongoTest。添加使用Java訪問(wèn)MongoDB的相關(guān)依賴包。打開(kāi)MongoTest項(xiàng)目中的XML文件“pom.xml”,在該文件的<project></project>標(biāo)簽中添加如下依賴項(xiàng)。小提示訪問(wèn)“https://mongodb.github.io/mongo-java-driver”查看“mongodb-driver-sync”的最新版本號(hào)。步驟3單擊代碼編輯區(qū)中的“加載Maven更改”按鈕,或在代碼編輯區(qū)中右擊,在彈出的快捷菜單中選擇“Maven”/“重新加載項(xiàng)目”選項(xiàng),將更改加載到Maven。二、數(shù)據(jù)庫(kù)、集合和文檔的基本操作使用MongoDBJavaAPI可以實(shí)現(xiàn)數(shù)據(jù)庫(kù)、集合和文檔的基本操作,基本步驟如下。(1)獲取MongoDB連接。使用create()方法可以創(chuàng)建MongoClient對(duì)象,用于與MongoDB服務(wù)器建立連接,基本方法如下。MongoClientmongoClient=MongoClients.create("mongodb://主機(jī)名:端口號(hào)");(2)創(chuàng)建或獲取數(shù)據(jù)庫(kù)。使用getDatabase()方法可以創(chuàng)建或獲取指定數(shù)據(jù)庫(kù),基本方法如下。MongoDatabasedatabase=mongoClient.getDatabase("數(shù)據(jù)庫(kù)名");小提示當(dāng)數(shù)據(jù)庫(kù)不存在時(shí),使用getDatabase()方法可以創(chuàng)建并獲取數(shù)據(jù)庫(kù);當(dāng)數(shù)據(jù)庫(kù)已經(jīng)存在時(shí),使用getDatabase()方法只能獲取數(shù)據(jù)庫(kù)。二、數(shù)據(jù)庫(kù)、集合和文檔的基本操作MongoCollection<Document>collection=database.getCollection("集合名");(3)創(chuàng)建或獲取集合。使用getCollection()方法可以創(chuàng)建或獲取指定集合,基本方法如下。小提示當(dāng)集合不存在時(shí),使用createCollection()方法可以創(chuàng)建指定集合。//一次插入一個(gè)文檔Documentdocument=newDocument("鍵1",值1).append("鍵2",值2);collection.insertOne(document);//一次插入多個(gè)文檔List<Document>documents=Arrays.asList(newDocument("鍵1",值1).append("鍵2",值2),
newDocument("鍵1",值1).append("鍵2",值2));collection.insertMany(documents);(4)執(zhí)行文檔的基本操作。①使用insertOne()方法或insertMany()方法一次可以向集合中插入一個(gè)或多個(gè)文檔,基本方法如下。二、數(shù)據(jù)庫(kù)、集合和文檔的基本操作FindIterable<Document>iterable=collection.find(查詢條件);②使用find()方法可以查詢指定集合中符合條件的文檔,基本方法如下。③使用updateOne()方法或updateMany()方法可以更新集合中符合條件的第一個(gè)文檔或所有文檔,基本方法如下。//更新符合條件的第一個(gè)文檔collection.updateOne(更新條件,更新操作);//更新符合條件的所有文檔collection.updateMany(更新條件,更新操作);FindIterable<Document>iterable=collection.find(查詢條件);④使用deleteOne()方法或deleteMany()方法可以刪除集合中符合條件的第一個(gè)文檔或所有文檔,基本方法如下。二、數(shù)據(jù)庫(kù)、集合和文檔的基本操作collection.aggregate(Arrays.asList(聚合操作));④使用deleteOne()方法或deleteMany()方法可以刪除集合中符合條件的第一個(gè)文檔或所有文檔,基本方法如下。⑤使用aggregate()方法聚合文檔,基本方法如下。//刪除符合條件的第一個(gè)文檔collection.deleteOne(刪除條件);
//刪除符合條件的所有文檔collection.deleteMany(刪除條件);聚合操作可以通過(guò)調(diào)用Accumulators類的方法實(shí)現(xiàn),常用的方法包括sort()、match()、group()、sum()、avg()、max()、push()等。(5)關(guān)閉連接。mongoClient.close();任務(wù)實(shí)施
任務(wù)分析首先創(chuàng)建數(shù)據(jù)庫(kù)和集合;然后將圖中的文件數(shù)據(jù)批量插入集合中;最后根據(jù)需要更新、查詢、刪除和聚合文檔。
實(shí)施步驟使用MongoDBJavaAPI操作網(wǎng)站數(shù)據(jù)任務(wù)實(shí)施
實(shí)施步驟1、創(chuàng)建數(shù)據(jù)庫(kù)和集合(1)向源數(shù)據(jù)層導(dǎo)入數(shù)據(jù)。步驟1在MongoTest項(xiàng)目的“src/main/java”目錄中創(chuàng)建CreateDatabase類,并在該類中編寫(xiě)如下代碼。importcom.mongodb.client.MongoClients;importcom.mongodb.client.MongoClient;importcom.mongodb.client.MongoDatabase;publicclassCreateDatabase{publicstaticvoidmain(String[]args){//獲取MongoDB連接
try(MongoClientmongoClient=MongoClients.create("mongodb://Master:27017")){任務(wù)實(shí)施
實(shí)施步驟1.創(chuàng)建數(shù)據(jù)庫(kù)和集合(1)向源數(shù)據(jù)層導(dǎo)入數(shù)據(jù)。步驟1在MongoTest項(xiàng)目的“src/main/java”目錄中創(chuàng)建CreateDatabase類,并在該類中編寫(xiě)如下代碼。
//創(chuàng)建數(shù)據(jù)庫(kù)web1MongoDatabasedatabase=mongoClient.getDatabase("web1");//創(chuàng)建集合http_logsdatabase.createCollection("http_logs");System.out.println("數(shù)據(jù)庫(kù)和集合創(chuàng)建成功!");}catch(Exceptione){System.err.println("錯(cuò)誤:"+e.getMessage());}}}任務(wù)實(shí)施
實(shí)施步驟步驟2在IDEA中運(yùn)行上述代碼,控制臺(tái)輸出“數(shù)據(jù)庫(kù)和集合創(chuàng)建成功!”提示信息,則證明代碼運(yùn)行成功。test>showdbs test>useweb1web1>showcollections步驟3在MongoDBShell中執(zhí)行如下語(yǔ)句,顯示所有數(shù)據(jù)庫(kù)。若顯示的數(shù)據(jù)庫(kù)中含有web1,則證明數(shù)據(jù)庫(kù)web1創(chuàng)建成功。步驟4執(zhí)行如下語(yǔ)句,切換至數(shù)據(jù)庫(kù)web1,并顯示該數(shù)據(jù)庫(kù)中的所有集合。若顯示的集合中含有http_logs,則證明集合http_logs創(chuàng)建成功。任務(wù)實(shí)施步驟1在MongoTest項(xiàng)目的“src/main/java”目錄中創(chuàng)建InsertCollection類,并在該類中編寫(xiě)如下代碼。importcom.mongodb.client.MongoClients;importcom.mongodb.client.MongoClient;importcom.mongodb.client.MongoCollection;importcom.mongodb.client.MongoDatabase;importorg.bson.Document;importjava.io.BufferedReader;importjava.io.FileReader;importjava.io.IOException;publicclassInsertCollection{publicstaticvoidmain(String[]args){StringconnectionString="mongodb://Master:27017";StringdatabaseName="web1"; //數(shù)據(jù)庫(kù)名稱
StringcollectionName="http_logs"; //集合名稱try{2、插入文檔任務(wù)實(shí)施步驟1在MongoTest項(xiàng)目的“src/main/java”目錄中創(chuàng)建InsertCollection類,并在該類中編寫(xiě)如下代碼。MongoClientmongoClient=MongoClients.
create(connectionString);//獲取數(shù)據(jù)庫(kù)
MongoDatabasedatabase=mongoClient.
getDatabase(databaseName);//獲取集合
MongoCollection<Document>collection=database.
getCollection(collectionName);//讀取本地文件
StringfilePath="D:\\SoftWare_book\\IDEA\\mongo_idea_code
\\mongoTest\\http.txt";
//調(diào)用自定義方法insertFromFile(),執(zhí)行插入文檔操作
insertFromFile(collection,filePath);
System.out.println("文檔插入成功!");
2、插入文檔任務(wù)實(shí)施步驟1在MongoTest項(xiàng)目的“src/main/java”目錄中創(chuàng)建InsertCollection類,并在該類中編寫(xiě)如下代碼。//關(guān)閉連接
mongoClient.close();}catch(Exceptione){System.err.println("錯(cuò)誤:"+e.getMessage());}}//自定義方法insertFromFile(),從文件中讀取數(shù)據(jù)并插入集合
privatestaticvoidinsertFromFile(MongoCollection<Document>
collection,StringfilePath)throwsIOException{
BufferedReaderreader=newBufferedReader(newFileReader(filePath));Stringline;//逐行讀取文件內(nèi)容while((line=reader.readLine())!=null){//按照Tab分隔符分割字段2、插入文檔任務(wù)實(shí)施步驟1在MongoTest項(xiàng)目的“src/main/java”目錄中創(chuàng)建InsertCollection類,并在該類中編寫(xiě)如下代碼。//檢查行數(shù)據(jù)格式是否正確,若正確將文檔插入集合
if(parts.length==2){//創(chuàng)建文檔對(duì)象,包含手機(jī)號(hào)碼和請(qǐng)求網(wǎng)站的鏈接兩個(gè)字段
Documentdocument=newDocument("phone_num",parts[0]).append("web",parts[1]);//將文檔插入集合
collection.insertOne(document);}}reader.close();}}2、插入文檔步驟2在IDEA中運(yùn)行上述代碼,控制臺(tái)輸出“文檔插入成功!”提示信息,則證明代碼運(yùn)行成功。任務(wù)實(shí)施步驟1在MongoTest項(xiàng)目的“src/main/java”目錄中創(chuàng)建UpdateCollection類,并在該類中編寫(xiě)如下代碼。importcom.mongodb.client.MongoClients;importcom.mongodb.client.MongoClient;importcom.mongodb.client.MongoCollection;importcom.mongodb.client.MongoDatabase;importcom.mongodb.client.result.UpdateResult;importorg.bson.Document;publicclassUpdateCollection{publicstaticvoidmain(String[]args){StringconnectionString="mongodb://Master:27017";Strin
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 電腦監(jiān)控施工方案(3篇)
- 消防電路施工方案(3篇)
- 明涵施工方案(3篇)
- 明園活動(dòng)策劃方案(3篇)
- 換熱器設(shè)計(jì)施工方案(3篇)
- 保險(xiǎn)業(yè)務(wù)運(yùn)營(yíng)管理指南(標(biāo)準(zhǔn)版)
- 綠云餐飲系統(tǒng)培訓(xùn)
- 中國(guó)的文化制度
- 2025年高職有機(jī)化工生產(chǎn)技術(shù)(有機(jī)化工應(yīng)用)試題及答案
- 2025年大學(xué)四年級(jí)(財(cái)務(wù)管理)高級(jí)財(cái)務(wù)管理試題及答案
- 商代方國(guó)考古探討
- 3單元4 彩虹 課件 2025-2026學(xué)年統(tǒng)編版小學(xué)語(yǔ)文二年級(jí)上冊(cè)
- 北京大興機(jī)場(chǎng)案例賞析64課件
- DBJT15-140-2018 廣東省市政基礎(chǔ)設(shè)施工程施工安全管理標(biāo)準(zhǔn)
- DB43∕T 1859-2020 研學(xué)產(chǎn)品設(shè)計(jì)與評(píng)價(jià)規(guī)范
- 醫(yī)務(wù)部會(huì)議管理制度范本
- Q-JJJ 9002-2025 鐵路建設(shè)項(xiàng)目安全穿透式管理實(shí)施指南
- 員工韌性能力培養(yǎng)-洞察及研究
- alc墻板安裝培訓(xùn)課件
- 2025年7月遼寧省普通高中學(xué)業(yè)水平合格性考試生物試題(原卷版)
- 抖音直播違規(guī)考試題及答案
評(píng)論
0/150
提交評(píng)論