1.MongoDB開發環境搭建
1.1.MongoDB介紹
MongoDB是一個基于分布式檔案存盤的資料庫,由C++語言撰寫,旨在為WEB應用提供可擴展的高性能資料存盤解決方案,
MongoDB是一個介于關系資料庫和非關系資料庫之間的產品,是非關系資料庫中功能最豐富,最像關系資料庫的,它支持的資料結構非常松散,是類似json的bson格式,因此可以存盤比較復雜的資料型別,Mongo最大的特點是它支持的查詢語言非常強大,其語法有點類似于面向物件的查詢語言,幾乎可以實作類似關系資料庫單表查詢的絕大部分功能,而且還支持資料建立索引,

中文網:https://www.mongodb.org.cn/
中文社區:https://mongoing.com/
1.2.下載及安裝MongoDB
MongoDB提供了可用于32位和64位系統的預編譯二進制包,下載可以從MongoDB官網下載安裝,
官方地址:https://www.mongodb.com
本教程下載3.4版本:https://www.mongodb.com/try/download/community
在win7系統安裝mongodb需要vc++運行庫,如果沒有則會提示“無法啟動此程式,因為計算機中丟失VCRUNTIME140.dll”,
需要去網上下載或者安裝vc++依賴,

下載完成mongodb-win32-x86_64-2008plus-3.4.24-signed.msi檔案后,點擊next安裝即可,
①選擇Custom,用戶自定義安裝:

②選擇自定義安裝包路徑,點擊Install即可安裝;

1.3.MongoDB啟動組態檔
①在MongoDB安裝目錄下C:\Program Files\MongoDB\Server\3.4新建一個MongoDB啟動組態檔mongo.conf,

檔案內容如下:
#資料庫路徑
dbpath=C:\Program Files\MongoDB\Server\3.4\data
#日志輸出檔案路徑
logpath=C:\Program Files\MongoDB\Server\3.4\logs\mongo.log
#錯誤日志采用追加模式
logappend=true
#啟用日志檔案,默認啟用
journal=true
#這個選項可以過濾掉一些無用的日志資訊,若需要除錯使用請設定為false
quiet=true
#埠號 默認為27017
port=27017
②同時創建相應的檔案夾:資料庫路徑(data目錄)、日志路徑(logs目錄)和日志檔案(mongo.log檔案)

③服務串列注冊MongoDB服務
通過執行bin/mongod.exe,使用--install選項來安裝此服務,使用--config選項來指定之前創建的組態檔,
cmd使用管理員身份進入C:\Program Files\MongoDB\Server\3.4\bin
mongod --config "C:\Program Files\MongoDB\Server\3.4\mongo.conf" --install --serviceName "MongoDB"

可以看到服務中已經創建了MongoDB服務

④啟動MongoDB服務
net start MongoDB

⑤關閉MongoDB服務
net stop MongoDB
⑥移除MongoDB服務
"C:\Program Files\MongoDB\Server\3.4\bin\mongod.exe" --remove
⑦訪問驗證MongoDB服務
上述命令執行完畢之后,在瀏覽器中輸入http://localhost:27017進行訪問,看到如下界面表示啟動成功!

也可以通過bin目錄下的mongo.exe(MongoDB自帶的客戶端)連接MongoDB Server:

1.4.安裝Navicat Premium 15
Navicat Premium 15目前已經支持了MongoDB資料庫的連接,目前我們已經可以使用Navicat Premium15版本進行MongoDB的連接及使用了,這樣我們就不用再多安裝一個Studio 3T來單獨連接MongoDB資料庫,當然熟悉Studio 3T的開發者也可以自己選用,
①建立MongoDB連接;

2.MongoDB入門使用
2.1.MongoDB基礎概念
在MongoDB中是通過資料庫、集合、檔案的方式來管理資料,下面是MongoDB與關系型資料庫的一些概念對比:
| SQL術語/概念 | MongoDB術語/概念 | 解釋/說明 |
|---|---|---|
| database | database | 資料庫 |
| table | collection | 資料庫表/集合 |
| row | document | 資料記錄行/檔案 |
| column | field | 資料欄位/域 |
| index | index | 索引 |
| table joins | 表連接(MongoDB不支持) | |
| primary key | primary key | 主鍵,MongoDB自動在每個集合中添加_id的主鍵 |
具體結構如下所示:

注意:
1.一個MongoDB實體可以創建多個資料庫;
2.一個資料庫可以創建多個集合;
3.一個集合可以包括多個檔案,
2.2.連接MongoDB
MongoDB的使用方式是客戶服務器模式,即使用一個客戶端連接MongoDB資料庫(服務端),
1.命令格式
mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/database][?options]
- mongodb:固定前綴
- username:賬號,可不填
- password:密碼,可不填
- host:主機名或ip地址,只有host主機名為必填項
- port:埠,可不填,默認27017
- /database:連接某一個資料庫
- ?options:連接引數,key/value對
例子:
mongodb://localhost 連接本地資料庫27017埠 mongodb://root:admin@localhost 使用用戶名為root,密碼為admin連接本地資料庫27017埠 mongodb://localhost,localhost:27018,localhost:27019 連接三臺主從服務器,埠為27017、27018、27019
2.使用MongoDB自帶的javascript shell(mongo.exe)連接
windows版本的mongodb安裝成功,在安裝目錄下的bin目錄有mongo.exe客戶端程式

cmd狀態執行mongo.exe

3.使用客戶端工具Navicat/Studio3T連接;
4.使用java程式連接
添加依賴:
<dependency> <groupId>org.mongodb</groupId> <artifactId>mongo-java-driver</artifactId> <version>3.4.3</version> </dependency>
測驗連接:
@Test public void testConnection(){ //創建mongodb客戶端 MongoClient client = new MongoClient("localhost", 27017); //或者采用連接字串 //MongoClientURI connectionString = new MongoClientURI("mongodb://root:admin@localhost:27017"); //MongoClient client = new MongoClient(connectionString); //連接資料庫 MongoDatabase database = client.getDatabase("test"); //連接collection MongoCollection<Document> collection = database.getCollection("student"); //查詢第一個檔案 Document document = collection.find().first(); //得到檔案內容json串 String json = document.toJson(); System.out.println(json); }
2.3.資料庫操作
1.查詢資料庫
show dbs -- 查詢全部資料庫
db -- 顯示當前資料庫
2.創建資料庫
命令格式
use DATABASE_NAME ---有DATABASE_NAME的資料庫則切換到此資料庫,沒有則創建
注意:新創建的資料庫不顯示,需要至少包含一個集合才能顯示,
3.洗掉資料庫
命令格式
db.dropDatabase() ---洗掉當前的資料庫
示例:
> use student switched to db student > db student > show dbs admin 0.000GB local 0.000GB test 0.000GB > use test switched to db test > db test > show dbs admin 0.000GB local 0.000GB test 0.000GB > use test02 switched to db test02 > show dbs admin 0.000GB local 0.000GB test 0.000GB > db test02
2.4.集合
集合相當于關系資料庫中的表,一個資料庫可以創建多個集合,
1.創建集合
db.createCollection(name, options)
name:新創建的集合名稱
options:創建引數
示例:
> db.createCollection("student") { "ok" : 1 } > show dbs admin 0.000GB local 0.000GB test 0.000GB test02 0.000GB
2.洗掉集合
db.collection.drop() collection為集合名
例子:
db.student.drop() 洗掉student集合
2.5.檔案
檔案是MongoDB中的一條記錄,相當于mysql中的row,
2.5.1.插入檔案
MongoDB中檔案的格式是json格式,下面就是一個檔案,包含兩個key:_id主鍵和name,
{
"_id" : ObjectId("5b2cc4bfa6a4482337639b5"),
"name" : "Alex",
"address" : "limei"
}
插入命令:
db.COLLECTION_NAME.insert(document)
每個檔案默認以_id作為主鍵,主鍵默認型別為ObjectId(物件型別),MongoDB會自動生成主鍵值,
例子:
db.student.insert({"name":"Alex", "age": 23})
注意:同一個集合中的檔案的key可以不相同!但是建議設定為相同的,
測驗結果:
> db.student.insert({"name":"Alex", "age": 23})
WriteResult({ "nInserted" : 1 })
> show dbs
admin 0.000GB
local 0.000GB
test 0.000GB
test02 0.000GB

2.5.2.更新檔案
命令格式:
db.collection.update( <query>, <update>, <options> ) query:查詢條件,相當于sql陳述句的where update:更新檔案內容 options:選項
1.替換檔案
將符合條件"name":"Alex"的第一個檔案替換為{"name":"成都Alex","age":10},相當于先洗掉后插入,
db.student.update({"name":"Alex"}, {"name":"成都Alex","age":10})
結果:

2.$set修改器
使用$set修改器指定要更新的key,key不存在則創建,存在則更新,
將符合條件"name":"Alex"的所有檔案更新name和age的值,
db.student.update({"name":"Alex"}, {$set:{"name":"成都Alex", "age":20}},{multi:true})
multi:false表示更新第一個匹配的檔案,true表示更新所有匹配的檔案,
結果:

2.5.3.洗掉檔案
命令格式:
db.student.remove(<query>) query:洗掉條件,相當于sql陳述句中的where
1.洗掉所有檔案
db.student.remove({})
2.洗掉符合條件的檔案
db.student.remove({"name":"Alex"})
2.5.4.查詢檔案
命令格式:
db.collection.find(query, projection)
query:查詢條件,可不填
projection:投影查詢key,可不填
1.查詢全部
db.student.find()
2.查詢符合條件的記錄
查詢name等為"Alex"的檔案,
db.student.find({"name": "Aelx"})
3.投影查詢
只顯示name和age兩個key,_id主鍵不顯示,1表示顯示,0表示不顯示,
db.student.find({"name":"Alex"}, {name:1,age:1,_id:0})
2.6.用戶
正常情況下,為了連接安全,連接MongoDB會需要連接用戶及密碼,實際開發中一般需要授權相應的用戶,我們可以通過用戶賬號和密碼進行認證,
2.6.1.創建用戶
語法格式:
mongo>db.createUser( { user: "<name>", pwd: "<cleartext password>", customData: {<any information>}, roles: [ {role: "<role>", db: "<database>"} | "<role>", ... ] } )

示例:
創建root用戶,角色為root,在admin 集合中:
use admin db.createUser( { user:"root", pwd:"admin", roles:[{role:"root", db:"admin"}] } )
內置角色如下:
1.資料庫用戶角色:read、readWrite;
2.資料庫管理角色:dbAdmin、dbOwner、userAdmin;
3.集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManagr;
4.備份恢復角色:backup、restore;
5.所有資料庫角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
6.超級用戶角色:root
2.6.2.認證登錄
為了安全需要,MongoDB需要打開認證開關,即用戶連接MongoDB要進行認證,其中就可以通過賬號密碼方式進行認證,
步驟:
1.在mongo.conf中設定auth=true;

2.重啟Mongodb;

3.使用賬號和密碼連接資料庫;
1)mongo.exe連接:
mongo.exe -u root -p admin --authenticationDatabase admin
注意:使用該命令必須退出mongo.exe程式,使用cmd進入bin目錄執行:

2)使用客戶端Navicat進行登錄連接:
需要編輯連接指令如下

2.6.3.查詢用戶
查詢當前庫下的所有用戶
show users

2.6.4.洗掉用戶
語法格式:
db.dropUser("用戶名")
示例:
洗掉root1用戶
db.dropUser("root1")
2.6.5.修改用戶
語法格式:
db.updateUser( "<username>", { customData : { <any information> }, roles : [ { role : "<role>", db: "<database>"} | "<role>", ... ], pwd: "<cleartext password>" }, writeConcern: {<write concern>} )
示例:
先創建test1用戶:
db.createUser( { user:"test1", pwd:"test1", roles:[{role:"root", db:"admin"}] } )
修改test1用戶的角色為readWriteAnyDatabase:
use admin db.updateUser("test1", {roles:[{role:"readWriteAnyDatabase", db:"admin"}]})
2.6.6.修改密碼
語法格式:
db.changeUserPassword("username", "newPasswd")
示例:
修改test1用戶的密碼為123
use admin db.changeUserPassword("test1", "123")
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/286070.html
標籤:NoSQL
上一篇:附近的人?你zao嗎?
