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

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

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

系統(tǒng) 1929 0
面向文檔的 NoSQL 數(shù)據(jù)庫主要解決的問題不是高性能的并發(fā)讀寫,而是保證海量數(shù)據(jù)存儲的同時,具有良好的查詢性能。?

條件操作符 ?

<, <=, >, >= ?這個操作符就不用多解釋了,最常用也是最簡單的?
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的數(shù)據(jù)

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

?

$ne 不等于

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

?

$in 包含?

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

?

?

$nin 不包含

查詢age的值在7,8 范圍外的數(shù)據(jù)??

?

?

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

?

?

?

$size 數(shù)組元素個數(shù)

對于{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開頭的數(shù)據(jù)

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

?

Javascript 查詢和$Where查詢

查詢a大于3的數(shù)據(jù),下面的查詢方法殊途同歸?
 ?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 查詢記錄條數(shù)?

db.users.find().count();?
以下返回的不是5,而是user 表中所有的記錄數(shù)量?
db.users.find().skip(10).limit(5).count();?
如果要返回限制之后的記錄數(shù)量,要使用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自定義函數(shù)如下:

?function addNumbers( x , y ) {?

? ? return x + y;?
}

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

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

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

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

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

?

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

?

?

?

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


更多文章、技術交流、商務合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

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

【本文對您有幫助就好】

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

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 亚洲综合91| 四虎影永久在线观看网址 | 久久天堂 | 奇米影视奇米四色888av | 国产一区二区久久久 | 四虎国产精品免费久久影院 | 国产成人精品18 | 国产精品日本一区二区在线播放 | 日本中文字幕不卡免费视频 | 国产精品免费视频一区二区三区 | 99爱这里只有精品 | 久久中文字幕一区二区三区 | 国产精品毛片一区二区三区 | 国产成人综合在线 | 停停色| 国产精品香蕉在线观看不卡 | 亚洲成人网在线 | 精品国产日韩久久亚洲 | 日韩免费观看 | 国产香蕉一区二区在线观看 | 日本不卡在线 | 久久99精品久久久久久国产越南 | 久久国产精品免费专区 | 国产精品视频福利 | 91九色视频在线观看 | 欧美特级一级毛片 | 99久久国产亚洲综合精品 | 中文字幕在线精品 | 国产成人在线播放视频 | 深夜视频在线 | 国产欧美一区二区三区沐欲 | 91视频免费观看网站 | 国产大片在线观看 | 国产精品日日做人人爱 | 2021久久伊人精品中文字幕有 | 国产精品成人免费综合 | 国产在线观看成人免费视频 | 国产亚洲美女精品久久久2020 | 亚洲欧美综合另类 | 91在线看视频 | 精品乱人伦一区二区三区 |