shell常用操作
檢視資料庫版本
db.version()
檢視目前資料庫機器的連接配接位址
db.getMongo()
建立一個資料庫(如果use之後沒有建立任何集合。系統就會删除這個資料庫。)
use [databaseName]
删除資料庫(如果沒有選擇任何資料庫,會删除預設的test資料庫)
db.dropDatabase()
檢視有沒有删除 show dbs
顯示目前資料庫
db
檢視所有資料庫
show dbs
建立集合文檔
db.createCollection('a')
檢視資料庫中所有文檔(documentName)
show collections
查詢定制文檔的資料
查詢所有 db.[documentName].find() 相當于select * from table
查詢第一條資料 db.[documentName].findOne()
重命名集合
db.c.renameCollection("d")
删除資料庫中集合(documentName)
db.[documentName].drop()
檢視有沒有删除 show colloctions
shell裡的help
全局的help()
資料庫的help:db.help()
資料庫中文檔的help:db.[documentName].help()
關于使用者管理指令
進入管理資料庫
use admin
建立管理者使用者,root權限(建立管理者角色使用者的時候,必須到admin下建立。删除也是)
使用者一
db.createUser(
{
user: "root",
pwd: "root",
roles: [ { role: "root", db: "admin" } ]
}
)
使用者二
db.createUser(
{
user: "mydb",
pwd: "mydb",
roles: [ { role: "dbAdmin", db: "mydb" } ]
}
)
檢視目前使用者清單
db.system.users.find()
檢視建立的管理者使用者
show users
驗證使用者是否可用,傳回1 表示成功
db.auth("root","root")
删除使用者
删除單個使用者
db.system.users.remove({user:"XXXXXX"})
删除所有使用者
db.system.users.remove({})
建立完使用者後在配置檔案中開啟使用者驗證,儲存重新開機
權限級别:
document資料插入
給指定資料庫添加集合并添加記錄
db.[documentName].insert({key:"value"})
批量插入(shell不支援批量插入,想要完成批量插入使用shell的for循環)
for(var i=0;i<10;i++){
db.[ducumentName].insert({name:i})
}
document資料删除
删除相應文檔中資料
db.[documentName].remove({删除條件})
例子:
db.[documentName].remove({age:2}) 删除age=2的資料
删除清單中所有資料(集合的本身和索引不會删除)
db.[documentName].remove()
document資料更新
強硬的文檔替換更新操作(一般不使用,主鍵沖突的時候會報錯)
db.[documentName].updata({更新條件},{更新内容})
例子:
var p = db.[documentName].findOne()
db.[documentName].update(p.{name:"hello"})
insertOrUpdate操作
db.[documentName].update({更新條件},{更新内容},true)
意思是當查詢條件滿足時執行更新操作,不滿足執行插入操作
批量更新操作
db.[documentName].update({更新條件},{$set:{将更新内容放在修改器中}},false,true)
例子
db.[documentName].update({name:"hello"},{$set:{name:"world"}},false,true)
表示把所有neme=hello符合條件的都修改成world,false表示不啟用insertOrUpdate,true表示啟用批量更新
常用修改器介紹
$set:{} 如果存在鍵進行修改,不存在追加
$inc:{key:步長} 為指定鍵對應的數字類型的數值進行加減操作
$unset:{key:1} 删除指定的鍵
$push:{數組鍵:value} 往數組中追加值,如果未發現資料鍵則建立并追加
例子:
db.[documentName].insert({_id:5,name:5,books:[]})
db.[documentName].update({_id:5},{$push:{books:"books數組中值"}})
$pushAll:{數組鍵:[var1,var2,va3]} 一次追加多個值
$addToSet:{數組鍵:val} 目标數組存在此項則不操作,不存在則追加進去
$pop:{數組鍵:val} 從指定數組删除一個值當val=1删除最後一個值var=-1删除第一個值
$pull:{數字鍵:val} 删除一個指定數組中的值
$pull:{數組建:val1,val2,val...} 一次性删除多個指定的值
document資料查詢
插入500條資料
for(i=0;i<10000;i++){ db.log.insert({"uid":i,"name":"mongodb","age":6,"date":new Date()}); }
設定每頁顯示50條記錄
DBQuery.shellBatchSize=50;
檢視第一條
db.log.findOne()
檢視總記錄數
db.log.count()
檢視uid為100 的
db.log.find({uid:100});
find
準備素材:
var persons = [{
name:"jim",
age:25,
email:"[email protected]",
c:89,m:96,e:87,
country:"USA",
books:["JS","C++","EXTJS","MONGODB"]
},
{
name:"tom",
age:25,
email:"[email protected]",
c:75,m:66,e:97,
country:"USA",
books:["PHP","JAVA","EXTJS","C++"]
},
{
name:"lili",
age:26,
email:"[email protected]",
c:75,m:63,e:97,
country:"USA",
books:["JS","JAVA","C#","MONGODB"]
},
{
name:"zhangsan",
age:27,
email:"[email protected]",
c:89,m:86,e:67,
country:"China",
books:["JS","JAVA","EXTJS","MONGODB"]
},
{
name:"lisi",
age:26,
email:"[email protected]",
c:53,m:96,e:83,
country:"China",
books:["JS","C#","PHP","MONGODB"]
},
{
name:"wangwu",
age:27,
email:"[email protected]",
c:45,m:65,e:99,
country:"China",
books:["JS","JAVA","C++","MONGODB"]
},
{
name:"zhaoliu",
age:27,
email:"[email protected]",
c:99,m:96,e:97,
country:"China",
books:["JS","JAVA","EXTJS","PHP"]
},
{
name:"piaoyingjun",
age:26,
email:"[email protected]",
c:39,m:54,e:53,
country:"Korea",
books:["JS","C#","EXTJS","MONGODB"]
},
{
name:"lizhenxian",
age:27,
email:"[email protected]",
c:35,m:56,e:47,
country:"Korea",
books:["JS","JAVA","EXTJS","MONGODB"]
},
{
name:"lixiaoli",
age:21,
email:"[email protected]",
c:36,m:86,e:32,
country:"Korea",
books:["JS","JAVA","PHP","MONGODB"]
},
{
name:"zhangsuying",
age:22,
email:"[email protected]",
c:45,m:63,e:77,
country:"Korea",
books:["JS","JAVA","C#","MONGODB"]
}]
for(var i = 0;i<persons.length;i++){
db.persons.insert(persons[i])
}
查詢指定字段(預設自帶的id去掉)
db.persons.find({},{_id:0,name:1,age:1,country:1})
查詢出年齡在25-27之間的學習生
db.persons.find({age:{$gte:25,$lte:27}},{_id:0,name:1,age:1})
查詢出所有不是南韓國籍學生的數學成績
db.persons.find({country:{$ne:'Korea'}},{_id:0,name:1,m:1,country:1})
查詢國籍是中國或者是美國的學生
db.persons.find({country:{$in:['USA','China']}},{_id:0,name:1,country:1})
查詢國籍不是中國或者美國的學生
db.persons.find({country:{$nin:['USA','China']}},{_id:0,name:1,country:1})
查詢國文成績大于85或者英語大于九十的學生資訊
db.persons.find({$or:[{c:{$gt:85}},{e:{$gt:90}}]},{_id:0,name:1,e:1,c:1})
把中國國籍的學生上心新增sex鍵
db.persons.update({country:'China'},{$set:{sex:'M'}},false,true)
查詢sex為null 的學習
db.persons.find({sex:{$in:[null]}},{_id:0,name:1,sex:1})
查詢名字中存在“li”的學生資訊
db.persons.find({name:/li/i},{_id:0,name:1,sex:1})
查詢名字中不存在“li”的學生資訊
db.persons.find({name:{$nin:[/li/i]}},{_id:0,name:1,sex:1})
查詢喜歡看MONGOD和JS的學生
db.persons.find({books:{$all:['MONGODB','JS']}},{_id:0,name:1,books:1})
查詢第二本書是JAVA的學生資訊
db.persons.find({'books.1':'JAVA'},{_id:0,name:1,books:1})
查詢出Jim書架中第2~4本書
db.persons.find({name:"jim"},{books:{"$slice":[1,3]}})
查詢出最後一本書
db.persons.find({name:"jim"},{books:{"$slice":-1},_id:0,name:1})
分頁與排序
查詢出persons文檔中前5條資料
db.persons.find({},{_id:0,name:1}).limit(5)
查詢出persons文檔中5~10條的資料
db.persons.find({},{_id:0,name:1}).limit(5).skip(5)
Sort傳回按照年齡排序的資料[1,-1]
db.persons.find({},{_id:0,name:1,age:1}).sort({age:1})
三條資料位一頁進行分頁
第一頁db.persons.find({},{_id:0,name:1}).limit(3).skip(0)
第二頁db.persons.find({},{_id:0,name:1}).limit(3).skip(3)