Ubuntu18.04安裝與卸載MongoDB及基礎入門

MongoDB

官網:https://www.mongodb.com/

一、安裝與卸載

1.Ubuntu

官方文檔:https://docs.mongodb.com/manual/tutorial/install-mongodb-on-ubuntu/

1.1導入包管理系統使用的公鑰

wget -qO - https://www.mongodb.org/static/pgp/server-4.2.asc | sudo apt-key add -

響應 ok

1.2安裝所需的類庫

sudo apt-get install gnupg

1.3配置鏡像源並更新

echo "deb [ arch=amd64 ] https://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/4.2 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.2.list
sudo apt-get update

1.4安裝MongoDB

sudo apt-get install -y mongodb-org  
#自動創建創建數據目錄 /var/lib/mongodb和日誌目錄/var/log/mongodb。/etc/mongod.conf

1.5啓動MongoDB

sudo service mongod start       # stop  停止   restart  重啓

1.6驗證MongoDB已成功啓動

http://localhost:27017

結果:It looks like you are trying to access MongoDB over HTTP on the native driver port.

如果你的MongDB安裝在別的主機:則將/etc/mongod.conf文件中bind_id修改爲:0.0.0.0

1.7刪除

sudo service mongod stop
sudo apt-get purge mongodb-org*
sudo rm -r /var/log/mongodb
sudo rm -r /var/lib/mongodb

二、MongoDB入門

1.基礎概念

關係型數據庫 MongoDB 解釋/說明
database database 數據庫
table collection 數據庫表/集合
row document 數據記錄行/文檔
column field 數據字段/域
index index 索引
table joins 表連接(MongDB不支持)
primary key primary key 主鍵,MongoDB自動在沒個集合中添加_id的主鍵

注意:

  • 一個MongDB實例可以創建多個數據庫
  • 一個數據庫可以創建多個集合
  • 一個集合可以包括多個文檔

2.連接MongoDB

MongoDB的使用方式是客戶端服務器模式,即使用一個客戶端連接MongoDB數據庫(服務器)。故此有一下幾種連接操作方式。

2.1命令

mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]]

mongodb: 固定前綴

username:賬號,可選

password:密碼,可選

host:主機名或ip地址,必填

port:端口,可不填

/database:連接某一個數據庫

?options:連接參數,key/value 對

例子:

mongodb://localhost 連接本地數據庫27017端口 mongodb://root:root@localhost 使用用戶名root密碼爲root連接本地數據庫27017端口 mongodb://localhost,localhost:27018,localhost:27019,連接三臺主從服務器,端口爲27017、27018、27019

2.2使用MongDB自帶的JavaScript Shell(mongo.exe)連接

如windows環境下安裝目錄bin中有mongo.exe客戶端程序。

2.3使用Studio3T、Navicat12.1等工具

2.4使用Java程序連接

官方文檔:http://mongodb.github.io/mongo-java-driver/3.4/driver/tutorials/connect-to-mongodb/

2.4.1添加依賴
<dependency> 
    <groupId>org.mongodb</groupId> 
 <artifactId>mongo‐java‐driver</artifactId>
    <version>3.4.3</version> 
</dependency>
2.4.2測試程序
@Test public void testConnection(){ 
//創建mongodb 客戶端 
MongoClient mongoClient = new MongoClient( "localhost" , 27017 ); 
//或者採用連接字符串 
//MongoClientURI connectionString = new MongoClientURI("mongodb://root:root@localhost:27017"); 
//MongoClient mongoClient = new MongoClient(connectionString); 
//連接數據庫
MongoDatabase database = mongoClient.getDatabase("test"); 
// 連接collection 
MongoCollection<Document> collection = database.getCollection("student"); 
//查詢第一個文檔 
Document myDoc = collection.find().first(); 
//得到文件內容 json串 String json = myDoc.toJson(); System.out.println(json); }

3.操作數據庫

3.1查詢數據庫

查詢全部數據庫

show dbs 

顯示當前數據庫

db

3.2創建/切換數據庫

use DATABASE_NAME

新創建的數據庫不顯示,需要至少包括一個集合

3.3刪除數據庫

這是刪除當前數據庫,需要先切換數據庫

db.dropDatabase()

4.操作集合

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

4.1創建集合

db.createCollection(name, options) 
name: 新創建的集合名稱 
options: 創建參數

4.2刪除集合

db.collection.drop() 
例子: db.student.drop() 刪除student集合

5.操作文檔

5.1插入文檔

mongodb中文檔的格式是json格式,下邊就是一個文檔,包括兩個key:_id主鍵和name

{ 
"_id" :ObjectId("5b2cc4bfa6a44812707739b5"),
"name" : "小明" 
}

插入命令

db.COLLECTION_NAME.insert(document)

每個文檔默認以_id作爲主鍵,主鍵默認類型爲ObjectId(對象類型),mongodb會自動生成主鍵值。

db.student.insert({"name":"張三","age":10})

注意:同一個集合中的文檔的key可以不相同!但是建議設置爲相同的。

5.2更新文檔

命令格式

db.collection.update( 
    <query>, 
    <update>, 
    <options> 
)
query:查詢條件,相當於sql語句的where 
update:更新文檔內容 
options:選項
5.2.1替換文檔

將符合條件 “name”:"張三"的第一個文檔替換爲{“name”:“李四”,“age”:10}。

db.student.update({"name":"張三"},{"name":"李四","age":10})
5.2.2$set修改器

使用$set修改器指定要更新的key,key不存在則創建,存在則更新。

將符合條件 “name”:"張三"的所有文檔更新name和age的值。

db.student.update({"name":"張三"},{$set:{"name":"李四","age":10}},{multi:true})

multi:false表示更新第一個匹配的文檔,true表示更新所有匹配的文檔。

5.2.3刪除文檔

命令格式:

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

1)刪除所有文檔

db.student.remove({})

2)刪除符合條件的文檔

db.student.remove({"name":"張三"})
5.2.4查詢文檔

命令格式:

db.collection.find(query, projection) query:查詢條件,可不填 
projection:投影查詢key,可不填

1)查詢全部

db.student.find()

2)查詢符合條件的記錄

查詢name等爲"張三"的文檔。

db.student.find({"name":"張三"})

3)投影查詢

只顯示name和age兩個key,_id主鍵不顯示。

db.student.find({"name":"張三"},{name:1,age:1,_id:0})

6.用戶

6.1創建用戶

語法格式:

mongo>db.createUser(
{ user: "<name>", 
  pwd: "<cleartext password>", 
  customData: { <any information> }, 
  roles: [
       { role: "<role>", db: "<database>" } | "<role>",
... 
]} )

例子:

創建root用戶,角色爲root

use admin
db.createUser( { user:"root", pwd:"root", roles:[{role:"root",db:"admin"}] } )

內置角色如下:

  • 數據庫用戶角色:read、readWrite;

  • 數據庫管理角色:dbAdmin、dbOwner、userAdmin;

  • 集羣管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager;

  • 備份恢復角色:backup、restore;

  • 所有數據庫角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、

​ dbAdminAnyDatabase

  • 超級用戶角色:root

6.2查詢用戶

查詢當前庫下的所有用戶:

show users

6.3刪除用戶

語法格式:

db.dropUser(“用戶名”)

例子:

刪除root1用戶

db.dropUser(“root1”)

6.4修改用戶

語法格式:

db.updateUser( 
"<username>", 
  { 
  customData : { <any information> }, 
  roles : [ { role: "<role>", db: "<database>" } | "<role>", ... ], 
  pwd: "<cleartext password>" },
  writeConcern: { <write concern> })

例子:

修改root用戶的角色爲readWriteAnyDatabase

use admin db.updateUser("root",{roles:[{role:"readWriteAnyDatabase",db:"admin"}]})

6.5修改密碼

語法格式:

db.changeUserPassword("username","newPasswd")

例子:

修改root用戶的密碼爲123

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