天天看點

mongodb中shell基本常用操作指令

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({})
           

建立完使用者後在配置檔案中開啟使用者驗證,儲存重新開機

mongodb中shell基本常用操作指令

權限級别:

mongodb中shell基本常用操作指令

document資料插入

給指定資料庫添加集合并添加記錄

db.[documentName].insert({key:"value"})
           

批量插入(shell不支援批量插入,想要完成批量插入使用shell的for循環)

for(var i=0;i<10;i++){
	db.[ducumentName].insert({name:i})
}
           
mongodb中shell基本常用操作指令

document資料删除

删除相應文檔中資料

db.[documentName].remove({删除條件})
例子:
db.[documentName].remove({age:2})  删除age=2的資料
           

删除清單中所有資料(集合的本身和索引不會删除)

db.[documentName].remove()
           
mongodb中shell基本常用操作指令

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...} 一次性删除多個指定的值
           
mongodb中shell基本常用操作指令

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});
           
mongodb中shell基本常用操作指令
mongodb中shell基本常用操作指令
mongodb中shell基本常用操作指令

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)