1. 程式人生 > >MongoDB資料庫入門學習

MongoDB資料庫入門學習

MongoDB資料庫入門學習

安裝mongodb資料庫
推薦使用mongodb的客戶端Studio3t,安裝此客戶端
mongodb的入門基礎概念
與關係型資料庫對比如下:

SQL術語/概念 MongoDB術語/概念 解釋說明
database database 資料庫
table collection 資料庫表/集合
row document 資料記錄行/文件
column field 資料欄位/域
index index 索引
table joins 表連線(MongoDB不支援表連線)
primary key primary key 主鍵,MongoDB自動在每個集合中新增_id的主鍵
  1. 一個momgodb例項可以建立多個數據庫
  2. 一個數據庫可以建立多個集合(SQL中一個數據庫可以建立多個表)
  3. 一個集合可以包含多個文件(SQL中一個表可以有很多列)
    連線mongodb

    1.使用命令連線mangodb(windows下)
mongodb://[username:[email protected]]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?
options]]

mongodb:// 固定字首
username:賬號,選填
password:密碼,選填
host:主機名或者是ip地址,只有host主機名為必填項
port:埠,可不填,預設27017
/database:連線某一個數據庫
?options:連線引數,key/value鍵值對
事例:

mongodb://localhost  連線本地資料庫27017
埠 mongodb://username:password@localhost 使用使用者名稱為username,密碼為password連線本地資料庫27017埠 mongodb://localhost,localhost:27018,localhost:27019,連線單臺主從伺服器(叢集),埠為270172701827019

2.使用studio3T連線
3.使用java程式連線
新增依賴

<dependency>
       <groupId>org.mongodb</groupId>
       <artifactId>mongo‐java‐driver</artifactId>
       <version>3.4.3</version>
   </dependency>

編寫測試程式

@Test
public void test(){
//建立客戶端連線
MongoClient mongoClient = new MongoClient("localhost","27017");
//或者是採用連線字串
//MongoClientURI connectionURI = new MongoClientURI("mongodb://root:[email protected]:27017");
//MongoClient mongoClient = new MongoClient(connectionURI);
//連線資料庫
MongoDatabase database = mongoClient.getDatabase("test");
//連線colleciton
MongoCollection<Document> collection = database.getCollecton("student");
//查詢第一個文件
Document document = collection.find().first();
//得到檔案內容  json串兒
String json = document.toJson();
System.out.println(json);
}

資料庫
(mac下需要輸入mongo命令進入資料庫)
1.查詢資料庫
show dbs 查詢全部的資料庫
db 查詢當前的資料庫
2.建立資料庫(切換資料庫)
有該資料庫則切換,沒有該資料庫則建立資料庫
命令格式:

use DATABASE_NAME

例子:use test02
注意:新建立的資料庫不顯示,需要至少包括一個集合
3.刪除資料庫
命令格式:
db.dropDatabase()
例:刪除test02資料庫
先切換資料庫:use test02
再執行刪除:db.dropDatabase()
集合

  • 建立集合
    db.createCollection(name,options)
    name:新建立的集合名稱
    options:建立引數(可以省略)
    2.刪除集合
    db.collection.drop()
    例子:db.test.drop() 刪除test集合
    文件
    1.插入文件
    mongodb中文件的格式是json格式的文件,包括兩個key:_id和name
    _id:型別是ObjectId,作為文件的主鍵,是mongodb自己生成的物件id
    插入命令:db.collection_name.insert(document);
    例:
    db.test.insert({“name”:“張三”,“age”:18});
    2.更新文件
    db.collection.update(,,)
    query:相當於查詢條件
    update:更新文件內容
    options :選項
    1>替換文件:將name為小明的文件替換為{“name”:“小紅”,“age”:21}
    db.test.update({“name”:“小明”},{“name”:“小紅”,“age”:21})
    2>使用set
    使用KaTeX parse error: Expected '}', got 'EOF' at end of input: …{"name":"小紅"},{set:{“name”:“小黑”,“age”:12}},{multi:true})
    multi:為true表示更新所有匹配的文件,為false表示更新第一條文件
    3.刪除文件
    db.test.remove()
    :刪除條件,相當於sql中的where
    刪除所有文件:db.test.remove({});
    刪除指定的文件:db.test.remove({“name”:“小紅”});
    4.查詢文件
    db.collection.find(query,projection)
    query:查詢條件,可不填
    projection:投影查詢key,可不填
    查詢所有文件:db.test.find();
    查詢符合條件的文件:db.test.find({“name”:“小紅”});
    查詢符合條件的,按照指定的field輸出的文件:db.test.find({“name”:“小紅”},{name:1,age:0})
    1:表示需要查詢出來的field
    0:表示不需要查詢出來的field
    建立使用者
    為了安全起見,需要在配置檔案中開啟mongodb的認證開關,即使用mongodb的使用者名稱和密碼登入之後才能操作資料庫需要加上以下配置
    在mongo.conf的配置檔案中加上auth true
    重啟mongodb,即需要使用賬號來進行登入
    使用命令列進行連線:
    mongo -u username -p password authenticationDatabase admin
    可以使用studio3T進行連線:

mongo>db.createUser(
{ user: “”,
pwd: “”,
customData: { },
roles: [
{ role: “”, db: “” } | “”,
… ]}
)
栗子:
use admin
db.createUser(
{
user:“root”,
pwd:“123”,
roles:[{role:“root”,db:“admin”}]
} )
內建角色如下:

  • 資料庫使用者角色:read、readWrite;
  • 資料庫管理角色:dbAdmin、dbOwner、userAdmin;
  • 叢集管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager;
  • 備份恢復角色:backup、restore;
  • 所有資料庫角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、
    dbAdminAnyDatabase
    超級使用者角色:root
    查詢使用者
    查詢當前庫下的所有使用者:
    show users
    刪除使用者:
    db.dropUser(“使用者名稱”)
    栗子:db.dropUser(“root1”)
    修改使用者:
    db.updateUser(
    “”,
    {
    customData : { },
    roles : [
    { role: “”, db: “” } | “”,
    … ],
    pwd: “”
    },
    writeConcern: { })
    栗子:修改root使用者的角色為readWriteAnyDatabase
    use admin
    db.updateUser(“root”,{roles:[{role:“readWriteAnyDatabase”,db:“admin”}]})
    修改密碼:
    db.changeUserPassword(“username”,“newPassword”)
    栗子:修改使用者名稱為root的密碼為123
    use admin
    db.changeUserPassword("root:,"123’);

認證登陸
在設定了賬號密碼之後,需要在mongod.conf的配置檔案中新增認證,即可用賬號和密碼進行登陸
windows:
auth = true
mac:
security:
authorization: enabled