MongDB學(xué)習(xí)筆記第二章1_20160711

保存10000個數(shù)據(jù)?

for(var x=0;x<10000;x++){
db.stp.insert({'id':x})

數(shù)據(jù)查詢

通用知識

db.集合名稱.find({查詢條件} [,{設(shè)置顯示的字段}])
db.集合名稱.find().pretty() #美化顯示

關(guān)系運算

關(guān)系運算符號,大于($gt),小于($lt),大于等于($gte),小于等于($lte),不等($ne),等于({key:value}、$eq)

db.students.insert({'name':'張三','gender':'男','age':19,'score':89,'address':'海淀區(qū)'})
db.students.insert({'name':'李四','gender':'女','age':20,'score':60,'address':'海淀區(qū)'})
db.students.insert({'name':'王五','gender':'男','age':18,'score':50,'address':'東城區(qū)'})
db.students.insert({'name':'趙六','gender':'女','age':21,'score':99,'address':'海淀區(qū)'})
db.students.insert({'name':'孫七','gender':'男','age':19,'score':100,'address':'西城區(qū)'})
db.students.insert({'name':'李浩','gender':'女','age':19,'score':30,'address':'海淀區(qū)'})
db.students.insert({'name':'翔神','gender':'女','age':20,'score':54,'address':'西城區(qū)'})
db.students.insert({'name':'坡坡','gender':'男','age':21,'score':76,'address':'朝陽區(qū)'})
db.students.insert({'name':'小楓','gender':'男','age':20,'score':80,'address':'東城區(qū)'})
db.students.insert({'name':'魚哥','gender':'男','age':19,'score':75,'address':'海淀區(qū)'})

# 查詢年齡大于19的
db.students.find({'age':{'$gt':19}}).pretty()
#查詢成績大于60的
db.students.find({'score':{'$gt':60}}).pretty()
#查詢姓名不是王五的
db.students.find({'name':{'$ne':'王五'}}).pretty()

邏輯運算

邏輯運算符,‘$and’,‘$or’,‘$not、$nor’
$and: {key,{condition1,condition2....}} condition1 such as '$gte':19
$or: {'$or':[condition1,condition2...]} condition1 such as {'age':{'gt':19}}
$not: {'$not':[contion1,condition2...]} condition1 such as {'age':{'gt':19}}

# 查詢年齡在19~20歲的學(xué)生 # $and的用法
db.students.find({'age':{'$gte':19,'$lte':20}}).pretty()
# 查詢年齡不是19歲的學(xué)生
db.students.find({'age':{'$ne':19}}).pretty()
# 查詢年齡大于19歲,或者成績大于90分的學(xué)生
db.students.find({'$or':
[{'age':{'$gt':19}},
{'score':{'$gt':90}}]}).pretty()
# 針對或求反(年齡小于等于19歲,成績小于等于90分),其實就是一個條件都不能滿足
db.students.find({'$nor':
[{'age':{'$gt':19}},
{'score':{'$gt':90}}]}).pretty()

求模

就是求一個數(shù)被某個數(shù)除后余數(shù)滿足條件的。語法 {'$mod':[除數(shù),余數(shù)]}

db.studets.find({'age':{'$mod':[20,1]}}).pretty() #能運行出結(jié)果```
## 范圍查詢
'$in':在范圍里,'$nin':不在范圍里

查詢姓名是張三、李四、王五的信息

db.students.find({'name':{'$in':['張三','李四','王五']}}).pretty()

不在范圍

db.students.find({'name':{'$nin':['張三','李四','王五']}}).pretty()

## 數(shù)組查詢
$all,{"$all":[內(nèi)容1,內(nèi)容2,..]},至少含有這些內(nèi)容
$size,$slice,$elemMatch

增加信息

db.students.insert({'name':'人1','gender':'男','age':19,'score':89,'address':'海淀區(qū)','course':['語文','數(shù)學(xué)','物理','化學(xué)','生物','計算機(jī)','英語']})
db.students.insert({'name':'人2','gender':'男','age':19,'score':89,'address':'海淀區(qū)','course':['物理','化學(xué)','生物','計算機(jī)','英語']})
db.students.insert({'name':'人3','gender':'男','age':19,'score':89,'address':'海淀區(qū)','course':['語文','數(shù)學(xué)','物理','化學(xué)','生物']})
db.students.insert({'name':'人4','gender':'男','age':19,'score':89,'address':'海淀區(qū)','course':['語文','數(shù)學(xué)']})
db.students.insert({'name':'人5','gender':'男','age':19,'score':89,'address':'海淀區(qū)','course':['語文','數(shù)學(xué)','物理','化學(xué)','生物','計算機(jī)','英語']})
db.students.insert({'name':'人6','gender':'男','age':19,'score':89,'address':'海淀區(qū)','course':['語文','數(shù)學(xué)','計算機(jī)','英語']})
db.students.insert({'name':'人7','gender':'男','age':19,'score':89,'address':'海淀區(qū)','course':['計算機(jī)','英語']})
db.students.insert({'name':'人8','gender':'男','age':19,'score':89,'address':'海淀區(qū)','course':['數(shù)學(xué)','物理','化學(xué)','生物','計算機(jī)','英語']})

查詢同時參加語文和數(shù)學(xué)的學(xué)生

db.students.find({'course':{'$all':['語文','數(shù)學(xué)']}}).pretty() # $all表示至少含有

可以用Index來查詢,也是從0開始

db.students.find({'course.1':'數(shù)學(xué)'}).pretty()

要求查詢出只參加兩門課程的學(xué)生

db.students.find({'course':{'$size':2}}).pretty()

發(fā)現(xiàn)在進(jìn)行數(shù)據(jù)查詢的時候只要是內(nèi)容復(fù)合條件,數(shù)組的內(nèi)容就全部顯示出來了,但是現(xiàn)在希望可以控制數(shù)組的返回的數(shù)量,那么可以使用“$slice”進(jìn)行控制。

返回年齡為19歲所有學(xué)生的信息,但是要求只顯示兩門參加課程

db.students.find({'age':19},{'course':{'$slice':2}}).pretty() #第一個參數(shù)是查詢條件,第二個參數(shù)是顯示條件

現(xiàn)在只取得了前兩門的信息,那么也可以設(shè)置負(fù)數(shù)表示取出后兩門的信息。

db.students.find({'age':19},{'course':{'$slice':-2}}).pretty()

或者只是取出中間部分的信息。

db.students.find({'age':19},{'course':{'$slice':[1,2]}}).pretty() #這里是跳過1個顯示2個# 什么鬼#應(yīng)該是顯示索引為1和2的吧

試試

db.students.find({'age':19},{'course':{'$slice':[3,4]}}).pretty()

不對,還是跳過3個顯示4個才對!


有沒有發(fā)現(xiàn)一個規(guī)律,這些命令都是 {'命令':數(shù)組或數(shù)}的形式!
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容