1. 程式人生 > 實用技巧 >04 MongoDB相關操作

04 MongoDB相關操作

MongoDB相關操作

一、操作資料庫

1.1、查詢資料庫

show dbs //查詢全部資料庫
db //顯示當前資料庫

1.2、建立資料庫

use DATABASE_NAME

例子:

use test02

有test02資料庫則切換到此資料庫,沒有則建立

注意:新建立的資料庫不顯示,需要至少包含一個集合

1.3、刪除資料庫

db.dropDatabase()

例子:刪除test02資料庫

先切換資料庫:use test02
再執行刪除:db.dropDatabase()

二、操作資料

2.1、集合

在MongoDB中沒有表的概念,都是通過操作集合相當關係型資料庫中的表,一個數據庫可以有多個集合,一個集合是將相同型別的文件管理起來

2.1.1、建立集合

db.craeteCollection(name,option)
  • name:新建立的集合名稱
  • options:建立引數

2.1.2、刪除集合

db.collection.drop()

例子:

db.student.drop()   --刪除student集合

2.2、文件

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

{
    "_id" : ObjectId("5b2cc4bfa6a44812707739b5"),
    "name" : "黑馬程式設計師"
}

2.2.1、插入文件

db.COLEECTION_NAME.insert(document)

每個文件預設以_id作為主鍵,主鍵預設型別為ObjectId(物件型別),mongoDB會自動生成主鍵值

例如:

db.student.insert({"name":"黑馬程式設計師","age":10})

注意:同一個集合中的文件的key可以不相同,但是建議設定為相同的。

2.2.2、更新文件

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

例子:

1、替換文件

將符合條件"name":"北京黑馬程式設計師"的第一個文件替換為{"name":"北京黑馬程式設計師","age":10}

db.student.update({"name":"黑馬程式設計師"},{"name":"北京黑馬程式設計師","age":10})

2、$set修改器

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

將符合條件的"name":"北京黑馬程式設計師"的所有文件更新name和age的值

db.student.update({"name":"黑馬程式設計師"},{$set:{"name":"北京黑馬程式設計師","age":10}},{multi:true})
  • multi:false表示更新第一個匹配的文件,true表示更新所有匹配的文件

2.2.3、刪除文件

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

1、刪除所有文件

db.student.remove({})

2、刪除符合條件的文件

db.student.remove({"name":"黑馬程式設計師"})

2.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})

三、操作使用者

3.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"}]
    }
)

內建角色如下:

1、資料庫使用者角色:read、readWrite

2、資料庫管理角色:dbAdmin、dbOwner、userAdmin

3、叢集管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager

4、備份恢復角色:backup、restore

5、所有資料庫角色:readAnyDatabase、readWriterAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase

6、超級使用者角色:root

3.2、認證登入

為了安全需要,MongoDB要開啟認證開關,即使用者連線MongoDB要進行認證,其中就可以通過賬號密碼進行認證。

1、在mongo.conf中設定auth=true

2、重啟MongoDB

3、使用賬號和密碼連線資料庫

mongo.exe -u root -p 123 --authenticationDatabase admin

3.3、查詢使用者

查詢當前庫下的所有使用者

show users

3.4、刪除使用者

db.dropUser("使用者名稱")

例子:刪除root1使用者

db.dropUser("root1")

3.5、修改使用者

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

例子:修改root使用者的角色為readWriterAnyDatabase

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

3.6、修改密碼

db.changeUserPassword("username":"newPassword")

例子:修改root使用者的密碼為123

use admin
db.changeUserPassword("root":"123")