MongoDB 基本使用
一、資料庫操作
-
連接資料庫
mongo --host 192.168.0.21 --port 27017
-
查看資料庫
show dbs
-
創建庫
use test_db # 庫存在就切換到該庫,不存在就創建。剛創建的資料庫不顯示在 show dbs 列表中,如要顯示需插入數據。 db.test_col.insert({name: "aaa"}) show dbs
-
查看當前所在資料庫
db
-
刪除庫
db.dropDatabase()
二、文檔操作
-
插入文檔
db.test_doc.insert({name: "zhangsan", age: 18, job: "Student"}) # 3.2 版本之後引入的新方法 db.test_doc.insertOne({name: "zhangsan", age: 18, job: "Student"}) db.test_doc.insertMany([{name: "zhangsan", age: 18, job: "Student"}, [{name: "wangwu", age: 19, job: "Teacher"}])
-
查詢文檔
# 查看集合 show collections # 查詢所有文檔 db.test_doc.find({}) # 查詢 name 是 zhangsan 的文檔 db.test_doc.find({name: "zhangsan"})
-
更新文檔
db.test_doc.update({name: "zhangsan"}, {$set: {name: "wangwu"}}) db.test_doc.find().pretty() # 通過 save 方法替換已存在的文檔 db.test_doc.save({"_id":ObjectId("5ff475f26f2a2d9739aad1a3"), name: "lisi", age: 19, job: "IT"}) db.test_doc.insert({name: "a1", count: 2}) db.test_doc.insert({name: "b1", count: 3}) db.test_doc.insert({name: "c1", count: 10}) db.test_doc.insert({name: "d1", count: 20}) db.test_doc.insert({name: "e1", count: 30}) # 只更新滿足條件的第一條 db.test_doc.update({count: {$gt: 10}}, {$set: {"name": "big_d1"}}, false, false) # 更新滿足條件的所有的 db.test_doc.update({count: {$gt: 5}}, {$set: {"res": "big_big"}}, false, true) # 只添加第一條 db.test_doc.update({count:{$gt: 5}}, {$set: {"hello": "wow"}}, true, false) # 全部添加進去 db.test_doc.update({count:{$gt: 5}}, {$set: {"status": "ok"}}, true, true) # 3.2 版本之後引入的新方法 db.test_doc.updateOne({count: {$gt: 5}}, {$set: {"res": "big_big"}}) db.test_doc.updateMany({count: {$gt: 5}}, {$set: {"res": "big_big"}}) db.test_doc.replaceOne({count: {$gt: 5}}, {$set: {"res": "big_big"}})
-
刪除文檔
# 刪除滿足條件的第一條 db.test_doc.remove({count: {$gt: 5}}, 1) # 刪除所有 db.test_doc.remove({}) # 3.2 版本之後引入的新方法 db.test_doc.deleteOne({}) db.test_doc.deleteMany({})
三、用戶管理
為了安全起見 mongodb 配置文件中加入 auth = true
以開啟許可權認證
yaml版本的配置
security: authorization: enabled
# 為 test_db 庫創建一個可讀寫的用戶 use test_db db.createUser({user: "test_user", pwd: "123456", roles: [{role: "readWrite", db: "test_db"}]}) show users db.changeUserPassword("test_user", "112233") # 帶用戶名密碼連接 mongo mongo --host 192.168.0.21 --port 27017 -u test_user -p 112233 --authenticationDatabase test_db
MongoDB 內置角色有如下:
-
資料庫用戶角色:read、readWrite
-
資料庫管理角色:dbAdmin、dbOwner、userAdmin
-
集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager
-
備份恢復角色:backup、restore
-
所有資料庫角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
-
超級用戶角色:root — 這裡還有幾個角色間接或直接提供了系統超級用戶的訪問 (dbOwner 、userAdmin、userAdminAnyDatabase)
-
內部角色:__system
四、mongodb 備份還原 / 導出導入
1. 備份整個庫
mongodump -h 127.0.0.1:27017 -u root -p 'password' --authenticationDatabase admin -d dbName -o /data/backup/
2. 還原整個庫
mongorestore -h 127.0.0.1:27017 -u root -p 'password' --authenticationDatabase admin -d dbName --dir /data/backup/
# 可以加上 --drop 參數, 意思是恢復前先刪除當前數據(謹慎使用)
3. 導出一個 collection
mongoexport -h 127.0.0.1:27017 -u root -p 'password' --authenticationDatabase admin -d dbName -c collectionName -o /data/backup/collectionName.json --type json # 也可以導出 csv 格式的數據。--type csv, -f 指定導出數據的欄位 mongoexport -h 127.0.0.1:27017 -u root -p 'password' --authenticationDatabase admin -d dbName -c collectionName -o /data/backup/collectionName.csv --type csv -f "_id,user_id,user_name,age,status"
4. 導入一個 collection
mongoimport -h 127.0.0.1:27017 -u root -p 'password' --authenticationDatabase admin -d dbName -c collectionName --file /data/backup/collectionName.json
以上就是 MongoDB 的基本使用。更多內容還是參考官方文檔://docs.mongodb.com/manual/crud/