非關係型數據庫 — MongoDB(基礎概念、連接數據庫、數據庫/集合/文檔/用戶的CRUD、可視化工具_Studio3T)


歡迎訪問筆者個人技術博客:http://rukihuang.xyz/

MongoDB入門

1 基礎概念

  • MongoDB與關係型數據庫的對比
關係型 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 連接MongoDB

2.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:123@host 連接本地用戶名root,密碼爲123的本地數據庫27017端口
mongodb://localhost,localhost:27018,localhost:27019 連接三臺主從服務器,端口分別爲27017,27018,27019

2.2 使用mongo.exe

在這裏插入圖片描述

2.3 java程序連接

<dependency>
    <groupId>org.mongodb</groupId>
    <artifactId>mongo-java-driver</artifactId>
    <version>3.4.3</version>
</dependency>
  • 測試程序
@Test
public void testConnection() {
	//1. 創建MongoDB客戶端
    MongoClient mongoClient = new MongoClient("localhost", 20717);
    //採用連接字符串
    //MongoClientURI connectionString = new MongoClientURI("mongodb://localhost:27017");
    //MongoClient mongoClient = new MongoClient(connectionString);
    
    //2. 連接數據庫
    MongoDataBase database = mongoClient.getDataBase("test");
    
    //3. 連接collection
    MongoCollection<Document> collection = database.getCollection("student");
    
    //4. 查詢第一個文檔
    Document myDoc = collection.find().firsr();
    
    //5. 得到文件內容,json串
    String json = myDoc.toJson();
    System.out.println(json);
}

3 數據庫

3.1 查詢數據庫

  • show dbs:查詢全部數據庫
  • db:顯示當前數據庫

3.2 創建數據庫

  • use DATABASE_NAME
    • 如果有這個名字的數據庫就切換到這個數據庫,沒有就創建
    • 注意:新創建的數據庫不顯示,需要至少包括一個集合

3.3 刪除數據庫

  1. 先切換到這個數據庫
    • use DATABASE_NAME
  2. 再執行刪除
    • db.dropDatabase()

4 集合

  • 集合相當於關係數據庫中的表,一個數據庫可以創建多個集合,一個集合是將相同類型的文檔管理起來。

4.1 創建集合

  1. 先切換到要創建集合的數據庫
    • use DATABASE_NAME
  2. 創建集合
    • db.createCollection(name, options)
      • name:新創建的集合名
      • options:創建參數

4.2 刪除集合

  1. 切換到數據庫
    • use DATABASE_NAME
  2. 刪除集合
    • db.COLLECTION_NAME.drop()
      • db.student.drop():刪除名爲student的集合

5 文檔

5.1 插入文檔

  • mongodb中的文檔是json格式的
  • 每個文檔默認以_id爲主鍵,主鍵默認爲ObjectId(對象類型),mongodb會自動生成主鍵值
db.student.insert({"name":"小黃","age":10});

5.2 更新文檔

db.COLLECTION_NAME.update(
	<query>,
	<update>,
	<options>
)
  • query:查詢條件,相當於sql中的where條件
  • update:更新文檔內容
  • options:選項
db.student.update({"name":"小黃"},{"name":"小黃鴨","age":"18"})
  • 上述命令將name是小黃的文檔查詢出來,並將這個文檔進行更新替換

5.3 刪除文檔

db.COLLECTION_NAME.remove(<query>)
  • query:刪除條件,相當於sql中的where

5.4 查詢文檔

db.COLLECTION_NAME.find(query,projection)
  • query:查詢條件,可不填
  • projection:投影查詢Key,可不填

5.4.1 查詢全部

db.student.find()

5.4.2 查詢符合條件的記錄

db.student.find({"name":"小黃"})

5.4.3 投影查詢

  • 只顯示name和age兩個key,_id主鍵不顯示
db.student.find({"name":"小黃"},{name:1,age:1,_id:0})

6 用戶

6.1 創建用戶

db.createUser(
{
	user:"<name>",
	pwd: "<password>",
	custmData:{<any information>},
	roles:[{role:"<role>",db:"<database>"}]
}
)
  • 例子
db.createUser(
{
	user:"root",
	pwd: "123",
	roles:[{role:"root",db:"admin"}]
}
)
  • 內置角色

    1. 數據庫用戶角色:read,readWrite
    2. 數據庫管理角色:dbAdmin,dbOwner,userAdmin
    3. 集羣管理角色:clusterAdmin,clusterManager,clusterMonitor,hostManger
    4. 備份恢復角色:backup,restore
    5. 所有數據庫角色:readAnyDatabase,readWriteAnyDatabase,userAdminDatabase,dbAdminAnyDatabase
    6. 超級用戶角色:root

6.2 認證登錄

1. 在mongo.conf中設置`auth=true`
2. 重啓MongoDB服務
   1. 右鍵“此電腦”
   2. 點擊“管理”
   3. “服務”中找到MongoDB
   4. 右鍵—> “重新啓動”

在這裏插入圖片描述

3. 使用賬號密碼連接數據庫mongo.exe
  • ——mongo.exe
mongo.exe -u root -p 123 --authenticationDatabase admin
  • ——Studio3T

在這裏插入圖片描述

6.3 查詢用戶

show users

6.4 刪除用戶

db.dropUser("<用戶名>")

6.5 修改用戶

use admin
db.updateUser("test01",{roles:[role:"readWriteAnyDatabase",db:"admin"]})
  • 先找到這個用戶,再修改

6.6 修改密碼

use admin
db.changeUserPassword("username","newPwd")
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章