MongoDB系列簡介和安裝部署

      網友投稿 760 2022-05-29

      文章目錄

      第一章MongoDB簡介

      第二章MongoDB安裝

      第三章MongoDB基本操作

      第一章MongoDB簡介

      MongoDB 是一個基于分布式文件存儲的數據庫。由 C++ 語言編寫。旨在為 WEB 應用提供可擴展的高性能數據存儲解決方案。

      MongoDB 是一個介于關系數據庫和非關系數據庫之間的產品,是非關系數據庫當中功能最豐富,最像關系數據庫的。

      MongoDB 官網地址:https://www.mongodb.com/

      MongoDB 官方英文文檔:https://docs.mongodb.com/manual/

      MongoDB 各平臺-:https://www.mongodb.com/download-center#community

      第二章MongoDB安裝

      ###2.1 關閉SELINUX

      vi /etc/selinux/config

      1

      對配置文件進行修改,然后按ESC鍵,:wq保存退出

      #SELINUX=enforcing #SELINUXTYPE=targeted SELINUX=disabled #增加

      1

      2

      3

      4

      5

      :wq! #保存退出

      ###2.2 配置防火墻

      vi /etc/sysconfig/iptables

      1

      可以看到配置文件,然后按I鍵,insert如下數據

      -A INPUT -m state --state NEW -m tcp -p tcp --dport 9092 -j ACCEPT

      1

      然后按ESC鍵,:wq保存退出,配置文件代碼如:

      # Firewall configuration written by system-config-firewall # Manual customization of this file is not recommended. *filter :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [0:0] -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT -A INPUT -p icmp -j ACCEPT -A INPUT -i lo -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 9092 -j ACCEPT -A INPUT -j REJECT --reject-with icmp-host-prohibited -A FORWARD -j REJECT --reject-with icmp-host-prohibited COMMIT

      1

      2

      3

      4

      5

      6

      7

      8

      MongoDB系列之簡介和安裝部署

      9

      10

      11

      12

      13

      14

      15

      16

      17

      18

      19

      20

      21

      22

      23

      24

      25

      26

      27

      28

      :wq保存退出

      ###2.3 下載安裝Mongodb

      cd進入/usr/local/src

      cd /usr/local/src

      1

      wget下載

      wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-2.6.0.tgz

      1

      tar解壓

      tar zxvf mongodb-linux-x86_64-2.6.0.tgz

      1

      將解壓文件移動到安裝目錄

      mv mongodb-linux-x86_64-2.6.0 /usr/local/mongodb

      1

      創建mongodb存放路徑

      mkdir -p /usr/local/mongodb/data/

      1

      創建mongodb日志文件存放文件

      mkdir /usr/local/mongodb/logs/mongodb.log

      1

      ###2.4 啟動mongodb

      /usr/local/mongodb/bin/mongod --port 27017 --fork --dbpath=/usr/local/mongodb/data/ --logpath=/usr/local/mongodb/logs/mongodb.log --logappend&

      1

      檢查

      netstat -lanp | grep "27017"

      1

      進入mongodb數據庫控制臺

      ./mongo

      1

      設置mongodb全局

      添加環境變量

      vi /etc/profile

      1

      同樣使用VI編輯器,加入如下配置

      export PATH=$PATH:/usr/local/mongodb/bin

      1

      按ESC,然后:wq保存退出

      使配置文件立即生效

      source /etc/profile

      1

      然后就可以全局使用mongodb命令了

      進入mongodb控制臺

      mongo #進入MongoDB控制臺 show dbs #查看默認數據庫 use admin #切換到admin數據庫 exit #退出MongoDB控制臺

      1

      2

      3

      4

      5

      6

      7

      第三章MongoDB基本操作

      ###3.1MongoDB連接

      MongoDB連接,使用“username:password@hostname/dbname’”的形式進行連接。

      連接本地數據庫服務器,端口是默認的。

      mongodb://localhost

      1

      ###3.2創建數據庫

      MongoDB創建數據庫語法

      use DATABASE_NAME

      1

      demo:創建test數據庫

      use test

      1

      如果沒有數據庫,就創建數據庫,否就連接到指定數據庫

      查看所有的數據庫,使用

      show dbs

      1

      不過這時我們使用show dbs的話,還是看不到我們創建的數據庫,其實是需要我們向數據庫里添加數據才可以看得到的

      demo:向test數據庫里插入一行數據

      db.test.insert({"name":"test"})

      1

      ###3.3創建數據庫

      MongoDB刪除數據庫語法

      db.dropDatabase()

      1

      不過一般要先使用use連接數據庫,然后再刪除指導數據庫

      demo:刪除test數據庫

      連接test數據庫

      use test

      1

      刪除test數據庫

      db.dropDatabase()

      1

      刪除集合

      demo:刪除test數據庫的coll集合

      > use test switched to db runoob > show tables coll > db.coll.drop() true > show tables >

      1

      2

      3

      4

      5

      6

      7

      8

      ###3.4插入文檔

      MongoDB插入文檔語法大致如

      db.COLLECTION_NAME.insert(document)

      1

      demo:向test數據庫的col集合中插入文檔

      方法一

      >use test >db.col.insert({title: 'MongoDB', description: 'MongoDB NOSQL', by: 'test', url: 'https:', tags: ['mongodb', 'database', 'NoSQL'], likes: 100 })

      1

      2

      3

      4

      5

      6

      7

      8

      查看已經寫入數據的col集合

      db.col.find()

      1

      方法二

      定義一個document對象

      document=({title: 'MongoDB', description: 'MongoDB NOSQL', by: 'test', url: 'https:', tags: ['mongodb', 'database', 'NoSQL'], likes: 100 });

      1

      2

      3

      4

      5

      6

      7

      執行,將定義好的document對象寫入數據

      db.col.insert(document)

      1

      ###3.5更新文檔

      更新文檔操作語法大概如:

      db.collection.update( , , { upsert: , multi: , writeConcern: } )

      1

      2

      3

      4

      5

      6

      7

      8

      9

      參數意義:

      query : update的查詢條件,類似sql update查詢內where后面的。

      update : update的對象和一些更新的操作符(如 , , ,inc…)等,也可以理解為sql update查詢內set后面的

      upsert : 可選,這個參數的意思是,如果不存在update的記錄,是否插入objNew,true為插入,默認是false,不插入。

      multi : 可選,mongodb 默認是false,只更新找到的第一條記錄,如果這個參數為true,就把按條件查出來多條記錄全部更新。

      writeConcern :可選,拋出異常的級別。

      demo:更新test數據庫的文檔

      使用test數據庫

      use test

      1

      更新文檔操作

      db.col.update({'title':'MongoDB'},{$set:{'title':'MongoDB test'}})

      1

      然后查看文檔是否更新

      db.col.find()

      1

      修改多條相同的文檔

      上訴情況是修改一條文檔的,若修改多條相同的文檔,則需要設置 multi 參數為 true。

      db.col.update({'title':'MongoDB'},{$set:{'title':'MongoDB test'}},{multi:true})

      1

      save()方法

      語法大概如:

      db.collection.save( , { writeConcern: } )

      1

      2

      3

      4

      5

      6

      參數意義

      document : 文檔數據。

      writeConcern :可選,拋出異常的級別。

      demo:替換了 _id 為 56064f89ade2f21f36b03136 的文檔數據

      db.col.save({ "_id" : ObjectId("56064f89ade2f21f36b03136"), "title" : "MongoDB", "description": 'MongoDB NOSQL', "by": 'test', "url": 'https:', "tags": ['mongodb', 'database', 'NoSQL'], "likes": 100 })

      1

      2

      3

      4

      5

      6

      7

      8

      9

      只更新第一條記錄: db.col.update( { "count" : { $gt : 1 } } , { $set : { "test2" : "OK"} } ); 全部更新: db.col.update( { "count" : { $gt : 3 } } , { $set : { "test2" : "OK"} },false,true ); 只添加第一條: db.col.update( { "count" : { $gt : 4 } } , { $set : { "test5" : "OK"} },true,false ); 全部添加加進去: db.col.update( { "count" : { $gt : 5 } } , { $set : { "test5" : "OK"} },true,true ); 全部更新: db.col.update( { "count" : { $gt : 15 } } , { $inc : { "count" : 1} },false,true ); 只更新第一條記錄: db.col.update( { "count" : { $gt : 10 } } , { $inc : { "count" : 1} },false,false );

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      ###3.6刪除文檔

      MongoDB刪除文檔操作為

      db.collection.remove( , )

      1

      2

      3

      4

      MongoDB2.6以后版本的操作為

      db.collection.remove( , { justOne: , writeConcern: } )

      1

      2

      3

      4

      5

      6

      7

      query :(可選)刪除的文檔的條件。

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

      writeConcern :(可選)拋出異常的級別。

      demo:刪除title為MongoDB的數據

      db.col.remove({'title':'MongoDB'})

      1

      刪除集合所有數據

      db.col.remove({})

      1

      ###3.7MongoDB查詢

      MongoDB查詢語法

      db.collection.find(query, projection)

      1

      query :可選,使用查詢操作符指定查詢條件

      projection :可選,使用投影操作符指定返回的鍵。查詢時返回文檔中所有鍵值, 只需省略該參數即可(默認省略)。

      易讀方式查詢

      db.col.find().pretty()

      1

      除了 find() 方法之外,還有一個 findOne() 方法,它只返回一個文檔。

      ###3.8MongoDB條件操作

      MongoDB AND條件,可以傳入多個鍵(key),每個鍵(key)以逗號隔開

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

      1

      MongoDB OR條件

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

      1

      2

      3

      4

      5

      6

      7

      MongoDB AND和OR聯合查詢

      AND 和 OR 聯合使用,類似常規 SQL 語句為: ‘where likes>50 AND (by = ‘教程’ OR title = ‘MongoDB 教程’)’

      MongoDB條件操作符

      (>) 大于 : $gt

      (<) 小于 : $lt

      (>=) 大于等于 : $gte

      (<= ) 小于等于 : $lte

      Demo:

      獲取 “col” 集合中 “likes” 大于 100 的數據,可以使用以下命令:

      db.col.find({"likes" : {$gt : 100}})

      1

      獲取"col"集合中 “likes” 大于等于 100 的數據,可以使用以下命令

      db.col.find({likes : {$gte : 100}})

      1

      獲取"col"集合中 “likes” 小于 150 的數據,可以使用以下命令:

      db.col.find({likes : {$lt : 150}})

      1

      獲取"col"集合中 “likes” 小于等于 150 的數據,可以使用以下命令:

      db.col.find({likes : {$lte : 150}})

      1

      獲取"col"集合中 “likes” 大于100,小于 200 的數據,可以使用以下命令:

      db.col.find({likes : {$lt :200, $gt : 100}})

      1

      MongoDB Limit和Skip操作符

      Limit操作符,Number表示讀取的記錄數

      db.COLLECTION_NAME.find().limit(NUMBER)

      1

      MongoDB skip()方法

      Number表示要跳過的記錄數,默認從0開始

      db.COLLECTION_NAME.find().limit(NUMBER).skip(NUMBER)

      1

      ###3.9MongoDB $type操作符

      MongoDB $type操作符表

      獲取 “col” 集合中 title 為 String 的數據,可以使用以下命令:

      db.col.find({"title" : {$type : 2}})

      1

      ###3.10MongoDB排序

      使用sort()方法對數據進行排序,sort()方法可以通過參數指定排序的字段,并使用 1 和 -1 來指定排序的方式,其中 1 為升序排列,而-1是用于降序排列。

      這是對集合進行排序的

      db.COLLECTION_NAME.find().sort({KEY:1})

      1

      ###3.11MongoDB索引

      索引是特殊的數據結構,索引存儲在一個易于遍歷讀取的數據集合中,索引是對數據庫表中一列或多列的值進行排序的一種結構。建立索引可以提高查詢速度。如果沒有索引,MongoDB在讀取數據時必須掃描集合中的每個文件并選取那些符合查詢條件的記錄。

      demo:查詢col集合,“title”為索引字段,1為指定按升序創建索引,如果你想按降序來創建索引指定為-1即可。

      db.col.ensureIndex({"title":1})

      1

      在后臺創建索引

      db.values.ensureIndex({open: 1, close: 1}, {background: true})

      1

      ###3.12MongoDB聚合

      MongoDB中聚合(aggregate)主要用于處理數據(諸如統計平均值,求和等),并返回計算后的數據結果。有點類似sql語句中的 count(*)。

      基本語法如:

      db.COLLECTION_NAME.aggregate(AGGREGATE_OPERATION)

      1

      db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$sum : 1}}}])

      1

      以上實例類似sql語句:

      select by_user, count(*) from mycol group by by_user

      ###附錄

      Mongodb Java demo

      附錄demo:

      去http://mongodb.github.io/mongo-java-driver/下載相應的jar,放在libs文件夾里

      pom配置

      org.bson bson 3.4.2 system ${basedir}/src/main/webapp/WEB-INF/lib/bson-3.4.2.jar org.mongodb mongodb-driver 3.4.2 system ${basedir}/src/main/webapp/WEB-INF/lib/mongodb-driver-3.4.2.jar org.mongodb mongodb-driver-core 3.4.2 system ${basedir}/src/main/webapp/WEB-INF/lib/mongodb-driver-core-3.4.2.jar

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      13

      14

      15

      16

      17

      18

      19

      20

      21

      22

      23

      24

      25

      26

      27

      import com.mongodb.MongoClient; import com.mongodb.client.MongoDatabase; public class MongoDBJDBC{ public static void main( String args[] ){ try{ // 連接到 mongodb 服務 MongoClient mongoClient = new MongoClient( "10.10.1.1" , 27017 ); // 連接到數據庫 MongoDatabase mongoDatabase = mongoClient.getDatabase("test"); System.out.println("Connect to database successfully"); mongoDatabase.createCollection("colll"); System.out.println("集合創建成功"); }catch(Exception e){ System.err.println( e.getClass().getName() + ": " + e.getMessage() ); } } }

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      13

      14

      15

      16

      17

      18

      19

      20

      MongoDB 數據庫

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:機器學習這四個東西,你知道嗎?
      下一篇:測試從零開始-No.5-測試的基本概念和分類
      相關文章
      大桥未久亚洲无av码在线| 亚洲一区二区三区精品视频| 亚洲欧美成人一区二区三区| 亚洲国产成人精品电影| 亚洲男人天堂影院| 亚洲综合色丁香麻豆| 亚洲第一精品电影网| 亚洲精品国产专区91在线| 日韩精品亚洲人成在线观看| 午夜亚洲AV日韩AV无码大全| 亚洲Av综合色区无码专区桃色| 国产V亚洲V天堂A无码| 久久久久亚洲AV成人无码网站 | 国产成人亚洲综合色影视| 亚洲欧洲∨国产一区二区三区| 亚洲午夜精品一级在线播放放| 亚洲AV无码成人精品区狼人影院| 亚洲人精品亚洲人成在线| 亚洲一区二区三区精品视频| 亚洲avav天堂av在线网爱情| 亚洲av极品无码专区在线观看| 亚洲av一本岛在线播放| 亚洲欧洲专线一区| 国产成人亚洲精品电影| 亚洲成?v人片天堂网无码| 久久精品亚洲男人的天堂| 亚洲av无码一区二区三区网站| 久久久久亚洲精品天堂| 亚洲免费在线视频播放| 国产AV旡码专区亚洲AV苍井空| 亚洲AV无码资源在线观看| 午夜亚洲av永久无码精品| 亚洲中文字幕无码久久精品1| 国产V亚洲V天堂无码| 亚洲v高清理论电影| 亚洲激情视频在线观看| 亚洲伊人久久大香线蕉综合图片| 久久精品亚洲日本佐佐木明希| 亚洲国产日韩一区高清在线| 亚洲视频在线观看一区| 亚洲精品视频在线观看视频|