,>=這個操作符就不用多解釋了,最常用也是最簡單的db.collection.find({"field":{$gt:value}});//大于:field>valuedb.collection.find({"field":{$lt:value}});//小于:field

亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

MongoDB學習筆記(3)--高級查詢

系統 1625 0
面向文檔的 NoSQL 數據庫主要解決的問題不是高性能的并發讀寫,而是保證海量數據存儲的同時,具有良好的查詢性能。?

條件操作符 ?

<, <=, >, >= ?這個操作符就不用多解釋了,最常用也是最簡單的?
db.collection.find({ "field" : { $gt: value } } ); ? ?// ?大于: ? ?field > value?
db.collection.find({ "field" : { $lt: value } } ); ? ?// ?小于: ? ? field < value?
db.collection.find({ "field" : { $gte: value } } ); ?// ?大于等于: field >= value?
db.collection.find({ "field" : { $lte: value } } ); ?// ?小于等于: field <= value?
如果要同時滿足多個條件,可以這樣做?

db.collection.find({ "field" : { $gt: value1, $lt: value2 } } ); ? ?// value1 < field < value


?

$all 匹配所有

這個操作符跟SQL語法的in類似,但不同的是, in只需滿足( )內的某一個值即可, ?而$all必

須滿足[ ]內的所有值,例如:?
db.users.find({age : {$all : [6, 8]}}); ?
可以查詢出 ?{name: 'David', age: 26, age: [ 6, 8, 9 ] } ?
但查詢不出 ?{name: 'David', age: 26, age: [ 6, 7, 9 ] }?

?

$exists 判斷字段是否存在

?

?

查詢所有存在age字段的記錄 ?
db.users.find({age: {$exists: true}}); ?
查詢所有不存在name字段的記錄 ?
db.users.find({name: {$exists: false}});?

?

Null 值處理?

> db.c2.find({age:null}) ??

?

$mod 取模運算?

查詢age取模6等于1的數據

db.c1.find({age: {$mod : [ 6 , 1 ] } })

?

$ne 不等于

查詢x的值不等于3 的數據?
db.c1.find( { age : { $ne : 7 } } );?

?

$in 包含?

db.c1.find({age:{$in: [7,8]}});?

?

?

$nin 不包含

查詢age的值在7,8 范圍外的數據??

?

?

db.c1.find({age:{$nin: [7,8]}});

?

?

?

$size 數組元素個數

對于{name: 'David', age: 26, favorite_number: [ 6, 7, 9 ] }記錄?
匹配db.users.find({favorite_number: {$size: 3}});?

不匹配db.users.find({favorite_number: {$size: 2}});?

?

?

正則表達式匹配

查詢name 不以T開頭的數據

db.c1.find({name: {$not: /^T.*/}});??

?

Javascript 查詢和$Where查詢

查詢a大于3的數據,下面的查詢方法殊途同歸?
 ?db.c1.find( { a : { $gt: 3 } } );?
 ?db.c1.find( { $where: "this.a > 3" } );?
 ?db.c1.find("this.a > 3");?

 ?f = function() { return this.a > 3; } db.c1.find(f);??

?

count 查詢記錄條數?

db.users.find().count();?
以下返回的不是5,而是user 表中所有的記錄數量?
db.users.find().skip(10).limit(5).count();?
如果要返回限制之后的記錄數量,要使用count(true)或者count(非0)?

db.users.find().skip(10).limit(5).count(true);??

?

skip限制返回記錄的起點

從第3 條記錄開始,返回5 條記錄(limit 3, 5)?

db.users.find().skip(3).limit(5);?

?

sort 排序?

以年齡升序asc?

db.users.find().sort({age: 1});?
以年齡降序desc?
db.users.find().sort({age: -1});

?

游標

for( var c = db.t3.find(); c.hasNext(); ) {?

printjson( c.next());?
}

MongoDB 還有另一種方式來處理游標??

> db.t3.find().forEach( function(u) { printjson(u); } );?

?

存儲過程?

關于存儲過程你需要知道的第一件事就是它是用 javascript來寫的。?

MongoDB 存儲過程是存儲在db.system.js表中的,我們想象一個簡單的sql自定義函數如下:

?function addNumbers( x , y ) {?

? ? return x + y;?
}

下面我們將這個sql自定義函數轉換為MongoDB 的存儲過程:??

> db.system.js.save({_id:"addNumbers", value:function(x, y){ return x + y; }});??

存儲過程可以被查看,修改和刪除,所以我們用 find 來查看一下是否這個存儲過程已經被創建上了。??
> db.system.js.find() ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
調用一下這個存儲過程:?

db.eval('addNumbers(3, 4.2)');?

db.eval()是一個比較奇怪的東西,我們可以將存儲過程的邏輯直接在里面并同時調用,而無需事先聲明存儲過程的邏輯。??

?

db.eval( function() { return 3+3; } );?

?

?

?

MongoDB學習筆記(3)--高級查詢


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 日韩一区二区三区免费 | 午夜影视在线观看 | 日产国语一区二区三区在线看 | 中文字幕在线观看亚洲 | 欧美在线观看视频 | 国产精品视频福利 | 北条麻妃手机在线观看 | xoxo日本| 久久香焦| 午夜大片免费男女爽爽影院久久 | 免看一级a一片成人123 | 欧美高清性粉嫩交 | 97在线碰碰观看免费高清 | www四虎在线高清 | 爱爱的免费视频 | jazz欧美人免费xxxxxx | 国产成人无精品久久久久国语 | 国产区高清 | 亚洲另类老妇videos | 亚洲图片 欧美 | h视频在线观看网站 | 夜夜夜夜夜夜爽噜噜噜噜噜噜 | 亚洲美女网址 | 国产精品视频免费看 | 99日精品欧美国产 | 99精品在线观看视频 | 亚洲欧美日韩高清专区一区 | 日韩不卡高清视频 | 性感毛片| 俄罗斯一级毛片免费视频 | 91手机看片国产永久免费 | 亚洲一级毛片 | 欧美久久超级碰碰碰二区三区 | 国产欧美日韩综合二区三区 | 在线观看精品91老司机 | 国产欧美一区二区三区沐欲 | xxxx日本在线播放免费不卡 | 99久久久免费精品免费 | 天天干天天碰 | 欧美日韩亚毛片免费观看 | 一级毛片老太婆交性欧美 |