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

黄色网页视频 I 影音先锋日日狠狠久久 I 秋霞午夜毛片 I 秋霞一二三区 I 国产成人片无码视频 I 国产 精品 自在自线 I av免费观看网站 I 日本精品久久久久中文字幕5 I 91看视频 I 看全色黄大色黄女片18 I 精品不卡一区 I 亚洲最新精品 I 欧美 激情 在线 I 人妻少妇精品久久 I 国产99视频精品免费专区 I 欧美影院 I 欧美精品在欧美一区二区少妇 I av大片网站 I 国产精品黄色片 I 888久久 I 狠狠干最新 I 看看黄色一级片 I 黄色精品久久 I 三级av在线 I 69色综合 I 国产日韩欧美91 I 亚洲精品偷拍 I 激情小说亚洲图片 I 久久国产视频精品 I 国产综合精品一区二区三区 I 色婷婷国产 I 最新成人av在线 I 国产私拍精品 I 日韩成人影音 I 日日夜夜天天综合

MongoDB學(xué)習(xí)筆記(3)--高級查詢

系統(tǒng) 2033 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只需滿足( )內(nèi)的某一個值即可, ?而$all必

須滿足[ ]內(nèi)的所有值,例如:?
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 取模運(yùn)算?

查詢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}});?

?

?

正則表達(dá)式匹配

查詢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限制返回記錄的起點(diǎn)

從第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});

?

游標(biāo)

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

printjson( c.next());?
}

MongoDB 還有另一種方式來處理游標(biāo)??

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

?

存儲過程?

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

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

?function addNumbers( x , y ) {?

? ? return x + y;?
}

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

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

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

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

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

?

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

?

?

?

MongoDB學(xué)習(xí)筆記(3)--高級查詢


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

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

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

【本文對您有幫助就好】

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

發(fā)表我的評論
最新評論 總共0條評論