1. Home
  2. /
  3. Web technology
  4. /
  5. MongoDB
  6. /
  7. [ Mongodb ] –...

[ Mongodb ] – Mongodb command line mode 的基楚操作指令

評等結果
點擊便能為這篇文章進行評等!
[評等總次數: 0,平均評等: 0]

這邊記錄一下 mongodb command line mode 的基楚操作指令 從無到有的 建立 collections 新增 查詢 更新 刪除 等基本指令,我的環境是 MongoDB shell version v3.6.3 指令可能會因不同版本有些微的差異。

mongodb 當資料庫啟用驗證模式後 每個db都需要有對應的 帳密登入

首先登入超級管理者帳戶

mongo mongodb://super:superpwd@172.1.2.3:27017/admin

登入後切換到你要新增的db

use op_log

切換成功會顯示

switched to db op_log

再下新增使用者的指令

db.createUser({user:"op",pwd:"test_pwd",roles:[{role:"readWrite",db:"op_log"}]})

新增成功會顯示

Successfully added user: {
“user” : “op”,
“roles” : [
{
“role” : “readWrite”,
“db” : “op_log”
}
]
}

若建錯帳號也可以使用刪除使用者指令

db.runCommand( { dropUser: "op" } )

再來就可以使用新的帳密去登入新的db

mongo mongodb://op:test_pwd@172.1.2.3:27017/op_log

登入成功會顯示
MongoDB shell version v3.6.3
connecting to: mongodb://172.31.24.1:27017/op_log
MongoDB server version: 3.6.3

新增一筆資料 指令

db.op_log.insert({"acount":"test"})

新增成功會顯示
WriteResult({ “nInserted” : 1 })

查詢 指令

db.op_log.find()

查詢成功會顯示
{ “_id” : ObjectId(“5e9d2f4eee592e24d2cdc2c7”), “acount” : “test” }

新增多筆資料 指令

 db.op_log.insertMany([{"account":"test1"},{"account":"test2"}])


新增成功顯示
{
“acknowledged” : true,
“insertedIds” : ObjectId(“5e9d38579afa78b4837efc98”),
ObjectId(“5e9d38579afa78b4837efc99”)
}

查詢 db.op_log.find()
{ “_id” : ObjectId(“5e9d2f4eee592e24d2cdc2c7”), “acount” : “test” }
{ “_id” : ObjectId(“5e9d38579afa78b4837efc98”), “account” : “test1” }
{ “_id” : ObjectId(“5e9d38579afa78b4837efc99”), “account” : “test2” }

這邊會發現白痴的小編打錯字 account 打成 acount, 這邊我們透過
save指令來修改整筆資料

db.op_log.save({"_id":ObjectId("5e9d2f4eee592e24d2cdc2c7"),"account":"test"})


成功會顯示
WriteResult({ “nMatched” : 1, “nUpserted” : 0, “nModified” : 1 })

查詢 db.op_log.find()
{ “_id” : ObjectId(“5e9d2f4eee592e24d2cdc2c7”), “account” : “test” }
{ “_id” : ObjectId(“5e9d38579afa78b4837efc98”), “account” : “test1” }
{ “_id” : ObjectId(“5e9d38579afa78b4837efc99”), “account” : “test2” }

再來如果只是想修改某一個值 舉例 我要修改將 account test 改成 account test3
修改指令為

db.op_log.update({"account":"test"},{$set:{"account":"test3"}})


說明 {“account”:”test”} 為query 就類似 where 條件 ,{$set:{“account”:”test3″}} 要修改的值
這邊要注意這指令只會變更第一筆資料,如果要同時更新面同的條件資料需多加 {multi:true} 指令如下

db.op_log.update({"account":"test"},{$set:{"account":"test3"}},{multi:true})

查詢 db.op_log.find()
{ “_id” : ObjectId(“5e9d2f4eee592e24d2cdc2c7”), “account” : “test3” }
{ “_id” : ObjectId(“5e9d38579afa78b4837efc98”), “account” : “test1” }
{ “_id” : ObjectId(“5e9d38579afa78b4837efc99”), “account” : “test2” }

刪除

db.op_log.remove({"_id":ObjectId("5e9d2f4eee592e24d2cdc2c7")})

成功會顯示
WriteResult({ “nRemoved” : 1 })
查詢 db.op_log.find()
{ “_id” : ObjectId(“5e9d38579afa78b4837efc98”), “account” : “test1” }
{ “_id” : ObjectId(“5e9d38579afa78b4837efc99”), “account” : “test2” }

刪除符合條件的多筆資料

db.op_log.remove({"account":"test4"})

成功會顯示
WriteResult({ “nRemoved” : 2 })

官方建議的刪除方式

刪除單筆資料

db.op_log.deleteOne({"account":"test4"})

成功會顯示
{ “acknowledged” : true, “deletedCount” : 1 }

刪除多筆資料

db.op_log.deleteMany({"account":"test4"})

成功會顯示
{ “acknowledged” : true, “deletedCount” : 3 }

刪除所有資料

db.op_log.deleteMany({})

成功會顯示
{ “acknowledged” : true, “deletedCount” : 6 }

評等結果
點擊便能為這篇文章進行評等!
[評等總次數: 0,平均評等: 0]

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *