mongo基本操作

賣魚熊發表於2018-07-12

概念

RDBMS(關係型資料庫管理系統) MongoDB
Database(資料庫) Database(資料庫)
Table(表) Collection(集合)
Record(記錄) Document(文件)

庫級操作

use DATABASE            #切換/建立庫        
show dbs                #檢視所有資料庫(空庫不會顯示)
db.dropDatabase()        #刪除當前資料庫
db                        #檢視當前所在庫

#集合操作

db.createCollection(name, options)    #建立集合   用引號引起來
    capped:型別為boolean,如果為true則為建立一個固定大小的集合,當集合中的資料條目達    到最大時自動覆蓋以前的條目。
    size:指定集合位元組最大值,當capped為true時需要指定。單位為byte
    max:指定集合中資料的最大條數。    
    db.createCollection(
    "BizUser",
    {capped:1,autoIndexID:1,size:6142800,max:10000}
    )

show collections                #檢視當前資料庫的集合

db.集合名稱.drop()                #刪除集合

文件操作

插入

db.集合名稱.insert(document)    #插入文件,    集合不存在會自動建立, 不能插入重複id的資料

db.student.insert({_id:1, name:`bear`, age:18})


db.student.insert([
    {name:`juhao`, sex:`男`, age:18},
    {name:`nanbei`, sex:`男`, age:19},
    {name:`budong`, sex:`男`, age:20},
])

查詢

db.集合名稱.find()                #查詢所有
db.集合名稱.find().pretty()        #結構化顯示

db.集合.find({name:10}).pretty()            where name = 10
db.集合.find({name:{$ne:10} }).pretty()        where name != 10
db.集合.find({name:{$gt:10} }).pretty()        where name > 10
db.集合.find({name:{$lt:10} }).pretty()        where name < 10
#後面加個e就是加等於



#and邏輯
{$and:[{expression1}, {expression1}, ...]   }
#or邏輯
{$or:[{expression1}, {expression1}, ...]   }


#where sex=`` and age > 18
db.table.find({
    $and:[
        {sex:`男`}, {age:{$gt:18}}
    ]
})


#where sex=`` or age =18
db.table.find({
    $or:[
        {sex:`女`}, {age:18}
    ]
})


#where (sex=`` and age=18) or (sex=`` and age>18)
db.table.find({
    $or:[
        {$and:[{sex:`女`}, {age:18}]},
        {$and:[{sex:`男`}, {age:{$gt:18}}]}
    ]    
})

更新

db.table.update({sex:``},[{age:20})    #更新第一條找到的文件全部值  無multi

db.table.update({sex:`男`}, {$set:{age:666, agee:6666}})  #修改第一條找到的文件,不存在就新增
                           
db.table.update({sex:`男`}, {$set:{sex:`女`}}, {multi:true})    #更新全部

刪除

db.集合名稱.remove( <query>, <justOne> )
db.table.remove({age:18})        #刪除所有滿足條件的
db.table.remove({sex:``}, {justOne:true})    #刪除一條

mongodb配置

vim /etc/mongodb.conf
    dbpath                    #資料存放的地址
    logpath                    #日誌存放的地址
    bind_ip = 0.0.0.0         #監聽IP
    auth = True                #許可權認證

mongodb許可權

MongoDB預設設定為無許可權訪問限制

#進入user admin

#建立管理員使用者,用來管理使用者,可以通過這個角色來建立、刪除使用者,使用者只具有管理使用者和角色的許可權。
db.createUser({
    user:`bear`,
    pwd:`123456`,
    roles:[{role:"userAdminAnyDatabase", db:"admin"}]
})
#role:指定使用者的角色,db指定庫


db.createCollection(`student`)    #建立一個庫
use student                #進入

#給該庫新增使用者
db.createUser({            
    user:`test`,
    pwd:`test`,
    roles:[{
        role:`readWrite`,
        db:`student`
    }]
})


show users                #檢視當前庫下的使用者
db.dropUser(`username`)    #刪除某個使用者
db.dropAllusers()        #刪除當前庫的所有使用者
db.getUsers()            #查詢所有使用者