mongodb技術專題講座_第1頁
mongodb技術專題講座_第2頁
mongodb技術專題講座_第3頁
mongodb技術專題講座_第4頁
mongodb技術專題講座_第5頁
已閱讀5頁,還剩32頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

MongoDB技術專題講座目錄MongoDB簡介MongoDB的安裝配置啟動連接MongoDBMongoDB的增刪查改操作MongoDB的設計原那么1.MongoDB簡介

MongoDB簡介MongoDB是一個介于關系數據庫和非關系數據庫之間的產品,是非關系數據庫當中功能最豐富,最像關系數據庫的。支持的數據結構非常松散,是類似json的bson格式,因此可以存儲比較復雜的數據類型。MongoDB最大的特點是他支持的查詢語言非常強大,其語法有點類似于面向對象的查詢語言,幾乎可以實現類似關系數據庫單表查詢的絕大局部功能,而且還支持對數據建立索引。它是一個面向集合的,模式自由的文檔型數據庫。MongoDB的文檔結構模型MongoDB的邏輯結構是一種層次結構。主要由:文檔(document)、集合(collection)、數據庫(database)這三局部組成的。MongoDB的文檔〔document〕,相當于關系數據庫中的一行記錄。多個文檔組成一個集合〔collection〕,相當于關系數據庫的表。多個集合〔collection〕,邏輯上組織在一起,就是數據庫〔database〕。一個MongoDB實例支持多個數據庫〔database〕。2.MongoDB的安裝配置Mongodb下載安裝1、訪問mongodb官網〔〕,下載自己系統關聯版本。2.安裝完后,創立數據庫文件的存放位置,d:/MongoDB/data/db。創立日志文件存放位置,d:/MongoDB/data/log〔啟動mongodb效勞之前需要必須創立數據庫文件的存放文件夾,否那么命令不會自動創立,而且不能啟動成功。〕3.啟動mongodb效勞翻開cmd命令行,進入D:\mongodb\bin目錄,輸入如下的命令啟動mongodb效勞:D:/mongodb/bin>mongod--dbpathD:\mongodb\data\dbmongodb默認連接端口27017,如果出現如圖的情況,翻開://localhost:27017查看,如以下圖那么表示連接成功,如果不成功,可以查看端口是否被占用。5、將MongoDB設置成Windows效勞,使得每次開機MongoDB自動啟動。如圖在d:\mongodb\data\log〔存放日志文件〕下新建文件mongodb.log用記事本翻開mongo.config輸入:在d:\mongodb新建文件mongo.config,用管理員身份翻開cmd命令行,進入D:\mongodb\bin目錄,輸入如下的命令:mongod--configD:\mongodb\mongo.config--install--serviceName"MongoDB"翻開cmd輸入services.msc查看效勞可以看到MongoDB效勞,點擊可以啟動。3.連接MongoDB使用客戶端工具〔Robomongo〕下載Rongomongo進行安裝。s:///download在啟動之前,首先將MongoDB效勞啟動起來。創立新的連接創立數據庫使用客戶端工具〔Robomongo〕4.MongoDB的增刪查改操作新增操作語法:db.collectionName.insert(document);也可使用db.collectionName.save(document)命令。如果不指定_id字段save()方法類似于insert()方法。如果指定_id字段,那么會更新該_id的數據。注意:mongodb存儲的是文檔,文檔是json格式的對象。比方操作user集合增加多個文檔db.user.insert([{name:"孫1",gender:'boy',age:15},{name:"孫2",gender:'girl',age:16},{name:"孫3",gender:'boy',age:17},{name:"孫4",gender:'girl',age:18},{name:"孫5",gender:'boy',age:18},{name:"孫6",gender:'girl',age:17},{name:"孫7",gender:'boy',age:16},{name:"孫8",gender:'girl',age:15,hobby:[{lan:"java"},{game:"cs"}]},])刪除操作語法:db.collectionName.remove(查詢表達式,是否刪除多條選項);選項是指{justOne:true/false},是否只刪一行,默認為false.比方操作user集合(表).注意:1:查詢表達式依然是個json對象2:查詢表達式匹配的行,將被刪掉.3:如果不寫查詢表達式,collections中的所有文檔將被刪掉.----------------------------------------------------------------------1:刪除user集合中_id屬性值為9527的文檔。db.user.remove({_id:9527});2:刪除user集合中gender屬性為boy的文檔〔默認刪除多條數據〕。db.user.remove({gender:"boy"});3:刪除user集合中gender屬性為girl的文檔,只刪除1行。db.user.remove({gender:"girl"},true);查詢操作語法:db.collectionName.find(查詢表達式,查詢的列)db.collectionName.find({key1:value1,key2:value2})---------AND條件db.collectionName.find({$or:[{key1:value1},{key2:value2}]})----or條件比方操作user集合(表).-------------------------------------------------------------------------1:查詢所有user集合中文檔的數據。db.user.find();2:查詢user集合中所有的gender屬性(_id屬性默認總是查出來)。db.user.find({},{gender:true});3:查詢user集合中所有的gender屬性,且不查詢_id屬性。db.user.find({},{_id:false,gender:true});4:查詢user集合中所有gender屬性值為boy的文檔中的name屬性。db.user.find({gender:"boy"},{_id:false,name:true});5:查詢user集合中所有gender屬性值為boy并且年齡大于等于17的文檔中的name屬性。db.user.find({gender:"boy",age:{$gte:17}},{_id:false,name:true});更新操作語法:db.collection.update(查詢條件,更新的數據,是否修改多條選項);db.collection.save(document);//通過傳入的文檔來替換已有文檔比方操作user集合(表).-------------------------------------------------------------------------1:修改user集合中name為張三改成小王。db.user.update({name:"張三"},{name:"小王"});結果:文檔中的其他列也不見了,改后只有_id和name列了——新文檔直接替換了舊文檔,而不是修改。如果是想修改文檔的某列,可以用$set關鍵字db.user.update({name:"小王"},{$set:{name:"西門吹雪"}})2:修改user集合中所有name為王五的年齡修改為22歲。db.user.update({name:"王五"},{$set:{age:22}},{multi:true});5.MongoDB的設計原那么mongodb設計原那么1.一對一/一對很少one-to-few

〔可以采用內嵌文檔

〕針對個人需要保存多個地址的情景,可以在person集合中嵌入address數組文檔。person集合中{name:'張三',age:20,address:[{country:"中國",province:"山西省",city:"長治市"},{country:"中國",province:"山西省",city:"太原市"}]}優點:不需要單獨執行一條語句去獲取內嵌的內容缺點:無法把這些內嵌文檔當做單獨的實體去訪問適用場合:一對很少且不需要單獨訪問內嵌內容mongodb數據庫設計原那么2.一對許多〔但并不是很多〕one-to-many(中間引用〕一個人員組有很多人員Person集合-----------〔多〕{_id:ObjectID(12個字節組成)name:"張三"age:23}人員組集合------------〔一〕{name:"一組",persons:[ObjectID("aaaaa"),ObjectID("AAABBB").....]}適用場合:一對多且多的一端內容因為各種理由需要單獨存在的情況下可以通過數組的方式引用多的一方的。mongodb數據庫設計原那么3.一對非常多

one-to-squillions

父級引用〔mongodb每個文檔的最大16M〕一個公司有非常多的員工Company集合〔一〕{_id:ObjectID("company01")name:"可為時代"}員工集合〔多〕{name:"張三",age:23,company:ObjectID("company01")}適用場合:一對非常多的情況下,請將一的那端引用嵌入進多的一端對象中。mongodb數據庫設計原那么4.雙向關聯-----在one端和many端同時保存對方的引用person集合〔多〕{_id:ObjectID("person01"),name:"張三",age:23,group:ObjectID("group01")}group集合〔一〕{_id:ObjectID("group01"),name:"研發一組",persons:[ObjectID("person01")ObjectID("person02")]}優點:具有一對多的所有優點,同時在多的一方,可以很快找到少的一方缺點:更新時需要同時更新兩個集合中的引用,不能使用原子性mongodb數據庫設計原那么5.反范式反范式Many-<one

:冗余many端的數據到one端,即在one的一方保存many的引用集合反范式one-<many

:冗余one端

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論