【MongoDB学习之一】初始MongoDB
環境
MongoDB4.0
win7_x64
CentOS6.5_x64
一、MongoDB簡介
(1)MongoDB使用C++開發。
(2)MongoDB 旨在為WEB應用提供可擴展的高性能數據存儲解決方案。
(3)MongoDB 將數據存儲為一個文檔。MongoDB是一個基于分布式文件存儲的數據庫。
(4)MongoDB使用BSON作為數據存儲和傳輸的格式。BSON是一種類似JSON的二進制序列化文檔,支持嵌套對象和數組。
(5)MongoDB很像MySQL,collection對應MySQL的table,document對應MySQL的row。官方給自己的定義是Key-value存儲(高性能和高擴展)和傳統RDBMS(豐富的查詢和功能)之間的一座橋梁。
(6)MongoDB 不支持事務;
(7)MongoDB索引在內存中,而且創建受一定限制;
二、安裝
1、win7安裝
(1)官網下載:mongodb-win32-x86_64-2008plus-ssl-4.0.11.zip
(2)解壓:D:\mongoDB4.0
(3)通過服務安裝,通過控制臺安裝:
進入目錄:D:\mongoDB4.0\bin,啟動cmd:
mongod --bind_ip 127.0.0.1 --logpath "D:\mongoDB4.0\log\mongodb.log" --logappend --dbpath "D:\mongoDB4.0\data\db" --port 27017 --serviceName "MongoDBService" --serviceDisplayName "MongoDB" --install
下表為mongodb啟動的參數說明:
參數 描述
--bind_ip 綁定服務IP,若綁定127.0.0.1,則只能本機訪問,不指定默認本地所有IP
--logpath 定MongoDB日志文件,注意是指定文件不是目錄
--logappend 使用追加的方式寫日志
--dbpath 指定數據庫路徑,注意:MongoDB默認使用db目錄作為數據存儲目錄,但是這個目錄需要手工創建,這里我們創建的是:D:\mongoDB4.0\data\db
--port 指定服務端口號,默認端口27017
--serviceName 指定服務名稱
--serviceDisplayNam 指定服務名稱,有多個mongodb服務時執行。
--install 指定作為一個Windows服務安裝。
(4)啟動服務:
啟動:net start MongoDBService
停止:net stop MongoDBService (5)MongoDB后臺管理 Shell
mongo
退出:exit
參考:window平臺安裝 MongoDB
2、Linux安裝
(1)官網下載:mongodb-linux-x86_64-4.0.12.tgz
(2)解壓:
[root@node102 src]# tar -zxvf mongodb-linux-x86_64-4.0.12.tgz -C /usr/local
(3)安裝:
首先創建數據目錄和日志目錄:
[root@node102 mongodb-linux-x86_64-4.0.12]# cd /usr/local/mongodb-linux-x86_64-4.0.12 && mkdir -p ./data/db ./log
注意:/data/db 是 MongoDB 默認的啟動的數據庫路徑,如果你的數據庫目錄不是/data/db,可以通過 --dbpath 來指定。
然后執行啟動命令:
[root@node102 mongodb-linux-x86_64-4.0.12]# cd ./bin && ./mongod --dbpath=/usr/local/mongodb-linux-x86_64-4.0.12/data/db --logpath=/usr/local/mongodb-linux-x86_64-4.0.12/log/mongodb.log --fork 2019-08-09T15:30:59.686+0800 I STORAGE [main] Max cache overflow file size custom option: 0 about to fork child process, waiting until server is ready for connections. forked process: 1492 child process started successfully, parent exiting
注意:
--fork:后臺啟動
(4)MongoDB后臺管理 Shell,可以配置環境變量/etc/profile
[root@node102 bin]# ./mongo MongoDB shell version v4.0.12 connecting to: mongodb://127.0.0.1:27017/?gssapiServiceName=mongodb Implicit session: session { "id" : UUID("dd068bb5-ddaf-4709-acb4-1f5e3bd6ff40") } MongoDB server version: 4.0.12 Welcome to the MongoDB shell. For interactive help, type "help". For more comprehensive documentation, see http://docs.mongodb.org/ Questions? Try the support group http://groups.google.com/group/mongodb-user Server has startup warnings: 2019-08-09T15:30:59.745+0800 I STORAGE [initandlisten] 2019-08-09T15:30:59.745+0800 I STORAGE [initandlisten] ** WARNING: Using the XFS filesystem is strongly recommended with the WiredTiger storage engine 2019-08-09T15:30:59.745+0800 I STORAGE [initandlisten] ** See http://dochub.mongodb.org/core/prodnotes-filesystem 2019-08-09T15:31:00.463+0800 I CONTROL [initandlisten] 2019-08-09T15:31:00.463+0800 I CONTROL [initandlisten] ** WARNING: Access control is not enabled for the database. 2019-08-09T15:31:00.463+0800 I CONTROL [initandlisten] ** Read and write access to data and configuration is unrestricted. 2019-08-09T15:31:00.463+0800 I CONTROL [initandlisten] ** WARNING: You are running this process as the root user, which is not recommended. 2019-08-09T15:31:00.463+0800 I CONTROL [initandlisten] 2019-08-09T15:31:00.463+0800 I CONTROL [initandlisten] ** WARNING: This server is bound to localhost. 2019-08-09T15:31:00.463+0800 I CONTROL [initandlisten] ** Remote systems will be unable to connect to this server. 2019-08-09T15:31:00.463+0800 I CONTROL [initandlisten] ** Start the server with --bind_ip <address> to specify which IP 2019-08-09T15:31:00.463+0800 I CONTROL [initandlisten] ** addresses it should serve responses from, or with --bind_ip_all to 2019-08-09T15:31:00.463+0800 I CONTROL [initandlisten] ** bind to all interfaces. If this behavior is desired, start the 2019-08-09T15:31:00.463+0800 I CONTROL [initandlisten] ** server with --bind_ip 127.0.0.1 to disable this warning. 2019-08-09T15:31:00.463+0800 I CONTROL [initandlisten] 2019-08-09T15:31:00.463+0800 I CONTROL [initandlisten] 2019-08-09T15:31:00.463+0800 I CONTROL [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'. 2019-08-09T15:31:00.463+0800 I CONTROL [initandlisten] ** We suggest setting it to 'never' 2019-08-09T15:31:00.463+0800 I CONTROL [initandlisten] 2019-08-09T15:31:00.463+0800 I CONTROL [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'. 2019-08-09T15:31:00.463+0800 I CONTROL [initandlisten] ** We suggest setting it to 'never' 2019-08-09T15:31:00.463+0800 I CONTROL [initandlisten] > 2+2 4 > exit bye [root@node102 bin]#
(5)關閉
(5.1)在mongo客戶端關閉
> use admin
> db.shutdownServer() ?
(5.2)使用mongod,注意關閉哪個數據庫 需要指定對應的--dbpath
[root@node102 bin]# ./mongod --dbpath=/usr/local/mongodb-linux-x86_64-4.0.12/data/db --shutdown
參考:Linux平臺安裝MongoDB
注意:mongoDB4好像不再支持web用戶界面。?
三、MongoDB存取原理
內部執行引擎為JS解釋器(解釋符合JS語法的語句):
插入操作:把JSON對象數據存儲成BSON結構的文檔結構,
查詢操作:把BSON結構數據轉換為JSON對象.
四、MongoDB和關系型數據庫區別
參考:MongoDB 概念解析
?
?
1 package com.mongodb; 2 3 import java.util.HashMap; 4 import java.util.Map; 5 6 import org.bson.Document; 7 import org.bson.conversions.Bson; 8 import org.bson.types.ObjectId; 9 10 import com.mongodb.client.FindIterable; 11 import com.mongodb.client.MongoCollection; 12 import com.mongodb.client.MongoCursor; 13 import com.mongodb.client.MongoDatabase; 14 15 public class TestMongoDB { 16 17 public static void main(String[] args) 18 { 19 TestMongoDB test = new TestMongoDB(); 20 //插入數據 21 test.insertData(); 22 //查詢數據 23 test.find(); 24 test.findone(); 25 //更新數據 26 test.update(); 27 //刪除數據 28 test.delete(); 29 } 30 31 public void find() 32 { 33 //創建連接客戶端 34 MongoClient client = new MongoClient("localhost",27017); 35 //獲取數據庫對象 36 MongoDatabase db = client.getDatabase("test"); 37 //獲取操作的集合對象 38 MongoCollection<Document> collection = db.getCollection("wjy"); 39 //具體操作 40 FindIterable<Document> it = collection.find(); 41 //獲取游標對象 42 MongoCursor<Document> cursor = it.iterator(); 43 while (cursor.hasNext()) 44 { 45 //取出每一個文檔對象(行) 46 Document doc = cursor.next(); 47 String name = doc.getString("name"); 48 if ("喬峰".equals(name)) 49 { 50 Integer age = doc.getInteger("age"); 51 System.out.println(name+","+age); 52 } 53 else 54 { 55 Double age = doc.getDouble("age"); 56 System.out.println(name+","+age); 57 } 58 59 } 60 //釋放資源 61 cursor.close(); 62 client.close(); 63 } 64 65 public void findone() 66 { 67 MongoClient client = new MongoClient("localhost",27017); 68 //獲取數據庫對象 69 MongoDatabase db = client.getDatabase("test"); 70 //獲取操作的集合對象 71 MongoCollection<Document> collection = db.getCollection("wjy"); 72 //具體操作 73 Bson filter = new BasicDBObject("_id", new ObjectId("5850eacd7065f52b0eab7ff4")); 74 FindIterable<Document> it = collection.find(filter); 75 //獲取游標對象 76 MongoCursor<Document> cursor = it.iterator(); 77 while (cursor.hasNext()) 78 { 79 //取出每一個文檔對象(行) 80 Document doc = cursor.next(); 81 String name = doc.getString("name"); 82 if ("喬峰".equals(name)) 83 { 84 Integer age = doc.getInteger("age"); 85 System.out.println(name+","+age); 86 } 87 else 88 { 89 Double age = doc.getDouble("age"); 90 System.out.println(name+","+age); 91 } 92 93 } 94 //釋放資源 95 cursor.close(); 96 client.close(); 97 } 98 99 public void insertData() 100 { 101 MongoClient client = new MongoClient("localhost",27017); 102 MongoDatabase db = client.getDatabase("test"); 103 MongoCollection<Document> collection = db.getCollection("wjy"); 104 //使用Map來封裝json數據 105 Map<String,Object> map = new HashMap<String,Object>(); 106 map.put("name", "喬峰"); 107 map.put("age", 35); 108 map.put("gender", "true man"); 109 Map<String,Object> hobbyMap = new HashMap<String,Object>(); 110 hobbyMap.put("girl", "阿朱"); 111 hobbyMap.put("gongfu", "降龍十八掌"); 112 map.put("hobby", hobbyMap); 113 Document doc = new Document(map); 114 115 collection.insertOne(doc); 116 117 client.close(); 118 } 119 120 public void update() 121 { 122 MongoClient client = new MongoClient("localhost",27017); 123 MongoDatabase db = client.getDatabase("test"); 124 MongoCollection<Document> collection = db.getCollection("wjy"); 125 126 Bson filter = new BasicDBObject("_id",new ObjectId("5850eacd7065f52b0eab7ff4")); 127 128 Map<String,Object> map = new HashMap<String,Object>(); 129 map.put("name", "張無忌"); 130 map.put("age", 35); 131 Bson update = new BasicDBObject(map); 132 133 collection.updateOne(filter, new BasicDBObject("$set",update)); 134 135 client.close(); 136 } 137 public void delete() 138 { 139 MongoClient client = new MongoClient("localhost",27017); 140 MongoDatabase db = client.getDatabase("test"); 141 MongoCollection<Document> collection = db.getCollection("wjy"); 142 143 collection.deleteOne(new BasicDBObject("_id",new ObjectId("5850eacd7065f52b0eab7ff4"))); 144 145 client.close(); 146 } 147 }
?
?
參考:
官方網站:http://www.mongodb.org/
MongoDB教程:https://www.w3cschool.cn/mongodb/mongodb-intro.html
?
轉載于:https://www.cnblogs.com/cac2020/p/6184734.html
總結
以上是生活随笔為你收集整理的【MongoDB学习之一】初始MongoDB的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 好听的微商微商名字女
- 下一篇: 坦白也要勇气是什么歌呢