db.xs.insert({name:zhangsan}) db:當前數據庫 xs:學生集合(沒有的話自動建立) java
show collections 顯示當前數據庫的集合名字c++
show dbs 顯示當前數據庫名字數據庫
db.getName() 顯示當前數據庫名字ubuntu
db.getCollectionNames() 顯示當前集合名字c#
db.dropDatabase() 刪除數據庫命令數組
db.wtd.drop() 刪除當前集合名字dom
db.createUser({user:"123",pwd:"123",roles:[{role:"read",db:"admin"}]}) 插入用戶名jsp
db.system.users.find().pretty() 查詢數據庫中的user信息函數
db.dropUser("123") 刪除數據庫中的用戶ui
function cha(obj){var d=db.getCollection("wtdd");d.insert(obj);} 定義function函數
cha({"123123":"123333333333"}) 執行函數,注意花括號
db.wtdd.find() 查詢數據庫內容
db.wtdd.drop() 刪除當前集合
db.wtdd.remove({123:"123"}) 刪除集合內的元素
var shu=[{name:"zs",age:13,sex:"nan"},{name:"ls",age:27,sex:"nv"},{name:"zl",age:10,sex:"nan"},{name:"ww",age:27,sex:"nv"}]
db.wtdd.insert(shu)
db.wtdd.find({"name":"ww"},{_id:0}) find({},{}) 第一個花括號裏面是限制條件,第二個是輸出限制條件1輸出,0不輸出
db.wtdd.find({name:"ww"},{_id:0,name:1}) 只顯示name,{ "name" : "ww" }
db.wtdd.find({age:{$gte:13}}) 查找age大於等於13的人
db.wtdd.update({name:"ww"},{$set:{name:"wwwwww"}}) 更新操做
db.wtdd.update({name:"wwwwww"},{$set:{size:"wwwwww"}},false,false) update增長列操做,第一個是true找不到就新增一列(false只更新找到的),第二個true更新全部匹配到的信息(false只更新第一個找到的)
db.wtdd.find({sex:{$in:["nv","nan"]}}) 找到字段中包含[*,*,*],尋找*的,$in找到其中一個就行,能夠是 db.wtdd.find({sex:{$in:[null]}}) 尋找字段爲null的數據
db.wtdd.update({sex:{$in:[null]}},{$set:{sex:"nan"}},false,true) 尋找到sex爲null的數據後增添列設置爲nan
db.wtdd.find({$and:[{age:{$lt:27}},{age:{$not:{$in:[null]}}}]},{_id:0}) 找到age不爲空的而且年齡小於27歲,and數組裏面是對象,用{}擴住
db.wtdd.find({age:{$not:{$lt:27}}}) 查找年齡大於27歲的,此時若是age爲null也會被掃描進來,應該加判斷條件判斷age不爲null
for(var i=1;i<=10;i++) db.wtdd.insert({_id:i,name:i,age:i}) 批量存入數據
db.wtdd.find({}).limit(4) 只輸出前四個數值
db.wtdd.find({}).limit(4).skip(2) 跳過前兩個,從第三個開始輸出數值
db.wtdd.find({"like.0":"jsp"}) 找到數組中第0個數爲jsp的數,下標從零開始
db.wtdd.find({like:{$all:["jsp","java"]}}) 查找數組元素中油查找元素的數據
db.wtdd.update({like:{$size:2}},{$set:{size:2}},false,true) 查找到數組元素大小爲2的數據賦值列大小爲2
db.wtdd.update({_id:1},{$push:{like:"12"},$inc:{size:1}}) 找到id爲1的數據,添加元素兵使size+1,這裏的$inc不用加花括號
db.wtdd.update({_id:1},{$inc:{size:1}}) 單純設置一個數+1
db.wtdd.find({_id:1},{like:{$slice:[-1,123]}}) slice中的參數第一個是起始下標,第二個參數是輸出的數目,若是第一個參數是-1,第二個參數必須是>=1,只輸出最後一個數
db.wtdd.save({_id:1,name:1,age:123}) insert和save的區別:insert不能重複id鍵,save能夠重複主鍵id,重複以後只有如今的,原來的數組元素都會刪掉,至關於刪掉後添一條
db.wtd.remove({}) 一鍵刪除集合中的全部數據,參數爲{}花括號
db.wtdd.update({_id:1},{$set:{age:"123123123123"}}) 當原來的數據有這一列的時候會更新掉原來的數據
能夠本身設置_id號,insert()裏面參數是_id:123
db.wtdd.find({"like.1":"java"}) ------------------db.wtdd.find({like:"java"}) 兩個都能查找數組內的元素是否有java
·db.wtdd.update({_id:1},{$unset:{age:"fuck"}}) 先找到,後執行刪除$unset操做,後面的fuck參數隨便寫。
db.wtdd.update({_id:1},{$unset:{name:""}})不謝也行
db.wtdd.update({_id:1},{$set:{like:["c++","java"]}})---------------------db.wtdd.update({_id:1},{$push:{like:"c+"}}) 向數組中添加數據
db.wtdd.update({name:{$lt:7}},{$set:{like:["jsp","java"]}},false,true) 增長數組元素
db.wtdd.update({_id:1},{$push:{likes:"c#"}}) push操做直接生成一個數組,沒有的話承建一個,有的話插進去
db.wtdd.update({_id:1},{$addToSet:{like:"c+++"}}) 添加的時候進行判斷,有重複的加不進去,push不檢查直接插進去
db.wtdd.update({_id:1},{$pop:{like:1}}) 參數爲1刪除最後一個數,參數爲-1時刪除第一個數
db.wtdd.update({_id:1},{$pushAll:{like:["java!!","c++--","c#"]}}) 同時插進去好多個數
db.wtdd.update({_id:1},{$pull:{like:"c#"}}) pull刪除數組中的指定值,有重複的都會被刪掉
db.wtdd.update({_id:1},{$pullAll:{like:["c+","java"]}}) pullAll刪除數組中的的許多值,有重複的一併都刪掉
> var ite=db.wtdd.find()
> while(ite.hasNext()){var to=ite.next();print(to._id);} 利用迭代器操做查找數據集
https://paste.ubuntu.com/p/dntz6p6BYq/
var persons = [{ name:"jim", age:25, email:"75431457@qq.com", c:89,m:96,e:87, country:"USA", books:["JS","C++","EXTJS","MONGODB"] }, { name:"tom", age:25, email:"214557457@qq.com", c:75,m:66,e:97, country:"USA", books:["PHP","JAVA","EXTJS","C++"] }, { name:"holiday", age:26, email:"344521457@qq.com", c:75,m:63,e:97, country:"USA", books:["JS","JAVA","C#","MONGODB"] }, { name:"zhangsan", age:27, email:"2145567457@qq.com", c:89,m:86,e:67, country:"China", books:["JS","JAVA","EXTJS","MONGODB"] }, { name:"lisi", age:26, email:"274521457@qq.com", c:53,m:96,e:83, country:"China", books:["JS","C#","PHP","MONGODB"] }, { name:"wangwu", age:27, email:"65621457@qq.com", c:45,m:65,e:99, country:"China", books:["JS","JAVA","C++","MONGODB"] }, { name:"zhaoliu", age:27, email:"214521457@qq.com", c:99,m:96,e:97, country:"China", books:["JS","JAVA","EXTJS","PHP"] }, { name:"piaoyingjun", age:26, email:"piaoyingjun@uspcat.com", c:39,m:54,e:53, country:"Korea", books:["JS","C#","EXTJS","MONGODB"] }, { name:"lizhenxian", age:27, email:"lizhenxian@uspcat.com", c:35,m:56,e:47, country:"Korea", books:["JS","JAVA","EXTJS","MONGODB"] }, { name:"lihuiying", age:21, email:"lihuiying@uspcat.com", c:36,m:86,e:32, country:"Korea", books:["JS","JAVA","PHP","MONGODB"] }, { name:"zhangsuying", age:22, email:"zhangsuying@uspcat.com", c:45,m:63,e:77, country:"Korea", books:["JS","JAVA","C#","MONGODB"] }]
查詢語文成績大於85或者英語大於90的學生信息
db.persons.find({$or:[{c:{$gte:85}},{e:{$gte:90}}]},{_id:0,c:1,e:1}) or操做用[]包括
查詢出名字中不存在」li」的學生的信息
cha.find({name:{$not:/li/i}},{_id:0,name:1})
查詢國籍不是中國或美國的學生信息
db.persons.find({country:{$nin:[「USA」,「China」]}}) $not用於任何取反操做,$nin只適用於集合操做。
$all ----------------->[a,b,c,d]數組中的都得存在
cha.find({books:{$all:["JS","MONGODB"]}},{_id:0,name:1,age:1}).sort({age:1}) sort參數爲{},參數爲1是從小到大,參數爲-1是從大到小
var find=cha.find()
> while(find.hasNext()){var to=find.next();cha.update({name:to.name},{$set:{size:to.books.length}},false,true)} 經過函數實現增長列元素,查找喜歡的書是三個的操做。
cha.find({name:"jim"},{books:{$slice:[1,2]}}) silice實現輸出插片輸出 books:{$slice:-1} 直接輸出最後一個數
找到年齡大於22歲,在K學校上過學的學生而且喜歡C++
cha.find({age:{$gt:22},books:"C++","school.school":"K"},{_id:0}).pretty()
以j開頭的數據:/^j/,以ok結尾的數據:/ok$/,含有ij的數據:/ij/,查詢部分大小寫的數據:/ij/i 後面的i
function haha(){var t=Math.floor(Math.random()*1000);print(t);} 隨機生成函數,*100就是1-100的數,floor向負無窮取整,ceil是向正無窮取整。
執行文檔操做,返回文檔操做以前或者以後的結果,主要是new的賦值,找不到爲null
ps = db.runCommand({
"findAndModify":"persons",
"query":{name:"test"},
"update":{"$set":{"age":11}},
"new":true
}).value
--"findAndModify" 集合名
--"query" 查詢器
--"update" 修改器
--"new" 狀態--若是 true 表示返回結果是更新後的,false 爲更新前
--"sort" 排序
查找函數
distinct操做,後面value和values結果不同,value只處理一個結果,values處理許多結果
col = db.runCommand({distinct:"wtdd",key:"name"}).values
distinct元組內全部的不同的元素
集合操做分組,condition能夠省略,那個是限制結果底線的
db.runCommand({
group:{
ns:集合名字,
Key:分組的鍵對象,
Initial:初始化累加器,
$reduce:組分解器,
Condition:條件,
Finalize:組完成器
}
})
按照國家分類找出e最大的數,function中的參數一個是now,一個是pre
db.runCommand({
group:{
ns:"wtd",
key:{"country":true},
initial:{e:0},
$reduce:function(now,pr){
if(now.e>pr.e){
pr.e=now.e;
pr.name=now.name;
}
},
// condition:{e:{$gt:80}}
finalize:function(pr){ 將輸出值有必定的格式輸出
pr.e = pr.name+" -> scores "+pr.e
}
}
})
聚合操做,流水線,先找到而後處理數據,按照status等級A,B,C分類後求出每一個等級的總和
必須爲_id,
db.w.a([{$match:{status:{$in:['A','B','C']}}},{$group:{"_id":'$status',sum:{$sum:'$amount'}}}])
mapReduce
var map = function(){emit(this.location,this.name);} 第一個參數:依據分類的組,第二個參數:this.name是要如今的字符串有用作連接啥的,計數的話能夠是數字1,就是放一個東西到了每個group裏面
var reduce = function(key,values){return values.join(",");} function函數放着對數據的運用,key是上一個map中的分類列,後面是對每一個group中存的東西進行計算,就是上一個map中放進來的東西
var options = {out:"age_sum"} 把結果寫入到集合中,以便查找
db.my.mapReduce(map,reduce,options) 執行mapReduce操做
db.age_sum.find().pretty() 從查找的集合中顯示出結果
var map = function(){emit(this.location,this.name);}
> var reduce = function(key,values){return key+":"+values.join(",");}
>var options = {query:{age:{$lt:25}},out:"haha"} 在options中能夠進行元素選擇。
> db.my.mapReduce(map,reduce,options)
> db.haha.find()
mapReduce中間的參數能夠能夠調換名字,名字能夠隨便調換,函數調用順序不能變換
-----------------------------------------------分割線--------------------------------------------------------------------