1. 程式人生 > >【MongoDB詳細使用教程】二、MongoDB基本操作

【MongoDB詳細使用教程】二、MongoDB基本操作

目錄

  • 資料型別
  • 資料庫操作
  • 集合操作
  • 資料操作
      • 修改整行
      • 修改指定欄位的值

資料型別

MongoDB常見型別 說明
Object ID 文件ID
String 字串,最常用,必須是有效的UTF-8
Boolean 儲存一個布林值,true或false
Integer 整數可以是32位或64位,這取決於伺服器
Double 儲存浮點值
Arrays 陣列(js)或列表(python),多個值儲存到一個鍵
Object 用於嵌入式的文件,即一個值為一個文件
Null 儲存Null值
Timestamp 時間戳
Date 儲存當前日期或時間的UNIX時間格式

資料庫操作

命令 操作
show dbs 顯示資料庫列表
db 顯示當前資料庫
use 資料庫名 切換或建立資料(有則切換,無則建立)
db.dropDatabase() 刪除當前所在資料庫(D大寫)

注:

  • 使用"show dbs"時,不顯示空的資料庫
    ```py

    use mymongo
    switched to db mymongo

    db
    mymongo

    show dbs # 建立後使用show dbs不會顯示剛建立的資料庫
    admin 0.000GB
    config 0.000GB
    local 0.000GB

    db
    mymongo

    db.mytest.insert({"name":"chen"})
    WriteResult({ "nInserted" : 1 })

    show dbs
    admin 0.000GB
    config 0.000GB
    local 0.000GB
    mymongo 0.000GB # 插入一條資料後,就可以在show dbs中顯示出來了
    ```

  • 刪除資料庫前要切換到要刪除的資料庫,刪除之後資料庫內內容被清空,使用"show dbs"不顯示,但是使用"db"命令的時候還會看到。
    ```

    show dbs
    admin 0.000GB
    config 0.000GB
    local 0.000GB
    mymongo 0.000GB

    db.dropDatabase()
    { "dropped" : "mymongo", "ok" : 1 }

    show dbs
    admin 0.000GB
    config 0.000GB
    local 0.000GB
    ```

集合操作

關係型資料庫中,每個庫是由多張table組成,
而NoSQL中,每個庫是由多個集合(collection)組成,相當於sql中的table,集合中以鍵值對(json、python.dict)的形式儲存資料。

命令 操作
db.createCollection(集合名, [引數]) 建立集合(一般不用這種方式而是在插入資料時自動建立)
show collections/show tables 檢視集合
db.集合名.drop() 刪除集合
> db.createCollection("colletiontest")
{ "ok" : 1 }

> show collections
colletiontest
mytest

> db.colletiontest.drop()
true

> show collections
mytest

資料操作

也叫文件操作

db.集合名.insert({"鍵名1":值1, "鍵名2": 值2 ...})
> db.students.insert({"name":"chen","age":"18", "grade":"一年級"})
WriteResult({ "nInserted" : 1 })
> db.students.insert({"name":"wang","age":"19", "grade":"二年級"})
WriteResult({ "nInserted" : 1 })
> db.students.insert({"name":"xu","age":20, "grade":"三年級"})
WriteResult({ "nInserted" : 1 })

一條insert語句只能插入一行資料,insert後面不能跟多行資料。

db.集合名.findOne()        # 查詢一行
db.集合名.find()           # 查詢全部
db.集合名.find().pretty()  # 格式化列印

db.集合名.find({查詢條件}) # 按條件查詢
> db.students.findOne()
{
    "_id" : ObjectId("5db63d020f98841018f7695f"),
    "name" : "chen",
    "age" : "18",
    "grade" : "一年級"
}

> db.students.find()
{ "_id" : ObjectId("5db642b30f98841018f76965"), "name" : "chen", "age" : "18", "grade" : "一年級" }
{ "_id" : ObjectId("5db642bc0f98841018f76966"), "name" : "wang", "age" : "19", "grade" : "二年級" }
{ "_id" : ObjectId("5db653920f98841018f7696b"), "name" : "xu", "age" : 20, "grade" : "三年級" }

> db.students.find().pretty()
{
    "_id" : ObjectId("5db642b30f98841018f76965"),
    "name" : "chen",
    "age" : "18",
    "grade" : "一年級"
}
{
    "_id" : ObjectId("5db642bc0f98841018f76966"),
    "name" : "wang",
    "age" : "19",
    "grade" : "二年級"
}
{
    "_id" : ObjectId("5db653920f98841018f7696b"),
    "name" : "xu",
    "age" : 20,
    "grade" : "三年級"
}
> db.students.find()
{ "_id" : ObjectId("5db642b30f98841018f76965"), "name" : "chen", "age" : "18", "grade" : "一年級" }
{ "_id" : ObjectId("5db642bc0f98841018f76966"), "name" : "wang", "age" : "19", "grade" : "二年級" }
{ "_id" : ObjectId("5db653920f98841018f7696b"), "name" : "xu", "age" : 20, "grade" : "三年級" }
{ "_id" : ObjectId("5db654660f98841018f7696c"), "name" : "ma", "age" : 20, "grade" : "二年級" }

> db.students.find({"age":20})
{ "_id" : ObjectId("5db653920f98841018f7696b"), "name" : "xu", "age" : 20, "grade" : "三年級" }
{ "_id" : ObjectId("5db654660f98841018f7696c"), "name" : "ma", "age" : 20, "grade" : "二年級" }

"_id"是mongoDB自動新增的主鍵.
十六進位制,每兩個字元為一個位元組,共12個位元組

  • 前4個位元組為當前時間戳
  • 接下來3個位元組為機器ID
  • 再接下來2個是MongoDB的程序ID
  • 最後是排序流水號

修改整行

db.集合名.update({查詢條件}, {修改後結果})

這裡要注意,修改後結果就是整行的最終結果,並且只會修改一行,而不是所有匹配結果都修改。

可以通過多個欄位查詢

修改指定欄位的值

db.students.update({查詢條件}, {$set:{"要修改的欄位名1":修改後的值, "要修改的欄位名2": "值2"}})

同時修改了連個欄位的值,但同樣只會修改一條記錄

db.集合名.remove({查詢條件})  
db.集合名.remove({})    # 刪除全部資料  

會刪除所有的匹