MongoDB 筆記

數據遷移

導出集合數據到 json 或 csv 文件

  • 命令
    mongoexport -d dbname -c collectionname -o file --type json/csv -f "field1,field2,...,fieldN"
    
  • 參數
    • -d 數據庫名
    • -c 集合名
    • -o 輸出文件名
    • --type 輸出格式,默認 json
    • -f 輸出字段,如果導出 csv,需指定字段名

導入數據到集合

  • 命令
    mongoimport -d dbname -c collectionname --file filename --headerline --type json/csv -f "field1,field2,...,fieldN"
    
  • 參數
    • -d 數據庫名
    • -c 集合名
    • --type 導入格式,默認 json
    • -f 導入的字段名
    • --headerline 導入csv時,使用第一行的標題作爲導入字段
    • --file 導入的文件

備份數據庫

  • 命令
    mongodump -h dbhost -d dbname -o backup_dir
    
  • 參數
    • -h ip[:port]
    • -d 數據庫名
    • -o 備份數據存放目錄,需提前建立

恢復數據庫

  • 命令
    mongorestore -h dbhost -d dbname --dir backup_dir
    
  • 參數 -h ip[:port] -d 數據庫名 --dir 備份數據存放目錄 --drop 恢復前,先刪除當前數據

操作數據庫

  • 默認數據庫 test
  • 創建 use dbname
  • 查看當前選擇的數據庫 db
  • 查看數據庫列表 show dbs,不顯示空數據庫
  • 刪除數據庫 use dbname; db.dropDatabase()

操作集合

創建

db.createCollection("集合名", {capped:false, autoIndexId:false, size:最大字節, max:文檔最多數量})
# 或者在插入文檔時自動創建
db.集合名.inert({})

刪除

db.集合名.drop()

操作文檔

insert

  • 插入一個文檔
    db.集合名.insert({})
    # 或者
    db.集合名.insertOne({})
    
  • 插入多個文檔
    db.集合名.insert([{},{},{},...,{}])
    # 或者
    db.集合名.insertMany([{},{},{},...,{}])
    

find

  • 查詢匹配的文檔
    db.集合名.find({}).pretty()
    
  • 查詢,只返回一個文檔
    db.集合名.findOne({})
    
    • 相等 {"key":"value"}
    • 小於 {"key":{$lt:"value"}}
    • 小於等於 {"key":{$lte:"value"}}
    • 大於 {"key":{$gt:"value"}}
    • 大於等於 {"key":{$gte:"value"}}
    • 不等於 {"key":{$ne:"value"}}
    • and {$and:[{},{}]}
    • or {$or:[{},{}]}
  • 投影
    db.集合名.find({},{"key1":1,"key2":0 ...})
    
  • 限制返回文檔數量
    db.集合名.find({}).limit(N)
    
  • 跳過返回文檔數量
    db.集合名.find({}).limit(N).skip(N)
    
  • 排序,1升序,-1降序
    db.集合名.find({}).sort({"key":1})
    
    

update

  • 更新一個文檔
    db.集合名.update({},{$set:{}})
    
  • 更新多個文檔
    db.集合名.update({},{$set:{},{multi:true}})
    

save

db.集合名.save({,...})

remove

  • 刪除多條記錄
    db.集合名.remove({})
    
  • 刪除一條記錄
    db.集合名.remove({},1)
    
  • 刪除集合中的所有文檔,相當於 truncate
    db.集合名.remove()
    

索引

  • 創建索引,1升序,-1降序
    db.集合名.createIndex({"key1":1,"key2":-1})
    

聚合

db.集合名.aggregate([{}])

用戶

創建用戶

  • 管理員權限
    use admin
    db.createUser(
        {
            user: "username",
            pwd: "password",
            roles: [{role: "root", db: "admin"}]
        }
    )
    
  • 測試庫讀寫權限
    use testdb
    db.createUser(
        {
            user: "username",
            pwd: "password",
            roles: ["readWrite"]
        }
    )
    

驗證身份

db.auth("username", "password")

列出所有用戶

db.getUsers()

刪除數據庫用戶

use testdb
db.dropUser("username")

更改用戶密碼

db.updateuser(
    "username",
    {
        pwd: "new_password"
    }
)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章