亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數據庫 > MongoDB > 正文

MongoDB 查詢操作的實例詳解

2020-03-14 12:51:42
字體:
來源:轉載
供稿:網友

MongoDB 查詢操作的實例詳解

使用find或findOne進行查詢。并可以進行范圍查詢、數據集查詢、不等式查詢,以及其他的一些查詢。
查詢將會返回DBcursor 游標只有在你需要的時候返回文檔

針對游標返回的文檔(結果集) 進行操作 例如:忽略一定數量的結果,或者返回結果的數量,以及對結果的排序。

1.指定需要返回的鍵

有時候僅僅對文檔的某幾個鍵值感興趣,可以屏蔽返回的不感興趣的鍵值,返回感興趣的鍵值

mongos> db.blog.find({},{“name”:1}) { “_id” : ObjectId(“5659836e73c8340448fa470e”) } { “_id” : ObjectId(“565e5c0e73c8340448fa470f”) } { “_id” : ObjectId(“565f998e73c8340448fa4710”) } { “_id” : 1, “name” : “zmkzmkzmkzmkzmk” } { “_id” : 2, “name” : “zmkzmkzmkzmkzmk” } { “_id” : 3, “name” : “zmkzmkzmkzmkzmk” } { “_id” : ObjectId(“566004d173c8340448fa4712”), “name” : “zmk” }

可以這樣:

mongos> db.blog.find({},{“name”:1,”_id”:0}) { “name” : “zmkzmkzmkzmkzmk” } { “name” : “zmkzmkzmkzmkzmk” } { “name” : “zmkzmkzmkzmkzmk” } { “name” : “zmk” }

指定返回的鍵值,是查詢結果更高效。此接口可用于條件查詢,方便結果處理。

2.查詢條件

比較操作符

"$lt"、"$lte"、“$gt”,“$gte” 分別對應 <,<=,>,>=。

小貼士:在mongodb shell中定義方法的大概格式:

mongos> var insertName=function(){ … for(var i=0;i<10;i++){ … db.blog.insert({“_id”:1,”name”:”zmk”+i}) … } … } mongos> insertName() 

效果:

mongos> db.blog.find() { “_id” : 1, “name” : “zmk0” } { “_id” : 0, “name” : “zmk0” } { “_id” : 2, “name” : “zmk2” } { “_id” : 3, “name” : “zmk3” } { “_id” : 4, “name” : “zmk4” } { “_id” : 5, “name” : “zmk5” } { “_id” : 6, “name” : “zmk6” } { “_id” : 7, “name” : “zmk7” } { “_id” : 8, “name” : “zmk8” } { “_id” : 9, “name” : “zmk9” }

觀察下面的效果,find可以使用“$lt”<來查詢文件插入的時間

mongos> db.blog.insert({“_id”:10,”time”:new Date()}) WriteResult({ “nInserted” : 1 }) mongos> db.blog.find({“time”:{“$lt”:new Date()}}) { “_id” : 10, “time” : ISODate(“2015-12-05T12:08:53.469Z”) }

3.查詢數組

1.$all

應用于多個元素匹配數組,且并無順序。

mongos> db.blog.insert({“_id”:1,”fruit”:[“apple”,”banana”,”peach”]}) WriteResult({ “nInserted” : 1 }) mongos> db.blog.insert({“_id”:2,”fruit”:[“apple”,”kumquat”,”orange”]}) WriteResult({ “nInserted” : 1 }) mongos> db.blog.insert({“_id”:3,”fruit”:[“cherry”,”banana”,”apple”]}) WriteResult({ “nInserted” : 1 }) mongos> db.blog.find({“fruit”:{$all:[“apple”,”banana”]}}) { “_id” : 1, “fruit” : [ “apple”, “banana”, “peach” ] } { “_id” : 3, “fruit” : [ “cherry”, “banana”, “apple” ] }

對數組進行精確匹配,可以使用key.index語法指定下標

mongos> db.blog.find({“fruit.2”:”peach”}) { “_id” : 1, “fruit” : [ “apple”, “banana”, “peach” ] }

2.$size

查詢特定長度的數組。

mongos> db.blog.find({“fruit”:{$size:3}}) { “_id” : 1, “fruit” : [ “apple”, “banana”, “peach” ] } { “_id” : 2, “fruit” : [ “apple”, “kumquat”, “orange” ] } { “_id” : 3, “fruit” : [ “cherry”, “banana”, “apple” ] }

可以再存有數組的文檔中添加size鍵,每一次向指定數組中添加元素,同時增加“size”的值,自增操作非???,對性能不影響。

3.slice

可以返回某個鍵匹配的數組元素的一個子集

mongos> db.blog.find({“fruit”:{size:3}},{"fruit":{"slice”:-2}}) { “_id” : 2, “fruit” : [ “kumquat”, “orange” ] } { “_id” : 3, “fruit” : [ “banana”, “apple” ] }

4.查詢內嵌文檔

點語法即可

mongos>db.people.find({“name.first”:”Joe”,”name.last”:”Schmoe”})

要正確的指定一組元素,而不必指定每個鍵,則需要使用$elemMatch 用來在查詢條件中不非指定匹配數組中的單個內嵌文檔。

db.blog.find({“comments”:{“$elemMatch”:{“author”:”joe”,”score”:{“$gte”:5}}}})

5.limit、skip和sort

三個方法可以組合進行分頁.

比如你有一個在線商店,有人搜索mp3,若想每頁返回50個結果,而且按照價格從高到低升序排列。

db.stock.find({“des”:”mp3”}).limit(50).sort({“price”:-1}) db.stock.find({“des”:”mp3”}).skip(50).limit(50).sort({“price”:-1}) ……

然而略過太多會導致性能問題。

解決方法:盡量避免使用skip略過大量結果。

var page1=db.stock.find({“des”:”mp3”}).limit(50).sort({“price”:-1}) var lastest=null;//解決方法,將游標最后一個文檔記錄下來,成為第二次查詢的條件的一部分 while(page1.hasNext()){ lastest=page1.next(); display(lastest); } var page2=db.stock.find({“des”:”mp3”},{“price”:{$gt:lastest.price}}).limit(50).sort({“price”:-1}) ……

隨機選取文檔

正確方法是在插入文檔時插入一個隨機值的鍵,然后按照普通查詢進行find()即可。

 感謝閱讀,如有疑問請留言或者到本站社區交流討論,謝謝大家對本站的支持!


注:相關教程知識閱讀請移步到MongoDB頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
在线观看日韩视频| 久久精品国产久精国产一老狼| 欧美国产中文字幕| 久久精品人人做人人爽| 精品丝袜一区二区三区| 亚洲欧洲在线播放| 国产成人高潮免费观看精品| 欧美在线免费观看| 久久夜精品香蕉| 国产成人一区二区三区小说| 久久中国妇女中文字幕| 57pao成人国产永久免费| 欧美日韩亚洲一区二区| 懂色av中文一区二区三区天美| 亚洲www视频| 一区二区三区视频免费| 国产成人一区二区在线| 最新国产精品拍自在线播放| 亚洲国产成人精品电影| 亚洲男女性事视频| 国产深夜精品福利| 亚洲女人初尝黑人巨大| 久久久亚洲欧洲日产国码aⅴ| 久久久精品一区| 日韩精品视频中文在线观看| 久久精品久久久久久| 欧美交受高潮1| 亚洲国产精品久久久久秋霞不卡| 97成人精品视频在线观看| 国自产精品手机在线观看视频| 91精品视频在线免费观看| 欧美日韩免费一区| 国产精品视频自拍| 欧美激情欧美狂野欧美精品| 国产一区二区成人| 欧美在线观看日本一区| 欧美日韩ab片| 国产精品久久久久久久久久久久久| 国内精品视频在线| 国产亚洲欧美视频| 亚洲美女性生活视频| 国产日韩欧美电影在线观看| 亚洲精品久久久久久久久久久久久| 日韩欧美国产骚| 欧美一区二区三区免费观看| 美女扒开尿口让男人操亚洲视频网站| 国产精品一区二区av影院萌芽| 久久九九有精品国产23| 国产精品自产拍高潮在线观看| 国产精品久久久久久久电影| 国产日韩一区在线| 久久久久久国产精品| 国产日韩中文字幕在线| 欧美精品福利视频| 色综久久综合桃花网| 久久夜色撩人精品| 一区二区三区视频免费在线观看| 久久欧美在线电影| 92裸体在线视频网站| 亚洲第一二三四五区| 欧美国产日韩一区二区| 欧美日韩国产丝袜另类| 亚洲区免费影片| 91久久久国产精品| 色在人av网站天堂精品| 青青在线视频一区二区三区| 456亚洲影院| 国产在线a不卡| 久久久影视精品| 久久精品91久久香蕉加勒比| 精品亚洲永久免费精品| 久久精品2019中文字幕| 国产一区二区在线播放| 亚洲国产一区自拍| 欧洲成人午夜免费大片| 91久久久亚洲精品| 成人精品久久久| 7m第一福利500精品视频| 国语自产偷拍精品视频偷| 国产精品最新在线观看| www国产亚洲精品久久网站| 国内精品一区二区三区四区| 欧美中文在线免费| 久久久999精品免费| 97超级碰碰人国产在线观看| 日韩黄在线观看| 精品久久久久久久久久ntr影视| 欧美国产日韩中文字幕在线| 国模私拍一区二区三区| 国产精品视频1区| 日韩精品在线视频观看| 亚洲成人国产精品| 亚洲国产成人久久综合| 亚洲人成网站999久久久综合| 成人激情在线播放| 亚洲视频免费一区| 欧美日韩在线免费观看| 亚洲欧美日韩区| 欧美激情在线播放| 中文字幕成人精品久久不卡| 国产成一区二区| 伦理中文字幕亚洲| 最近2019中文字幕在线高清| 亚洲电影免费观看高清完整版在线| 欧美一乱一性一交一视频| 国产精品久久久久久久久久| 久久精品国产一区二区电影| 欧美成人三级视频网站| 午夜精品在线观看| 亚洲xxxxx电影| 亚洲午夜未满十八勿入免费观看全集| 国产成人在线视频| 国产一级揄自揄精品视频| 国产九九精品视频| 综合国产在线视频| 亚洲欧美日韩中文在线| 国产+成+人+亚洲欧洲| 欧美精品在线视频观看| 久久久久久久97| 久久九九免费视频| 日韩久久免费电影| 成人黄色免费网站在线观看| 欧美国产日韩一区二区三区| 欧美一区二区三区免费观看| 久久久久久久爱| 国产不卡精品视男人的天堂| 日本久久久a级免费| 欧美激情亚洲另类| 日韩精品电影网| 国产精品露脸av在线| 日韩中文字幕在线视频播放| 久久99久久99精品中文字幕| 欧美性猛交xxxxx免费看| 乱亲女秽乱长久久久| 亚洲欧美日韩国产中文专区| 日韩欧美精品中文字幕| 亚洲爱爱爱爱爱| 91在线视频导航| 欧美日韩不卡合集视频| 5566成人精品视频免费| 亚洲成年人在线播放| 亚洲第一精品夜夜躁人人躁| www.日韩.com| 久久国产精品久久久久久久久久| 亚洲电影免费观看高清完整版| 国产精品久久久久久久天堂| 欧美电影免费观看| 国产精品视频网址| 午夜精品一区二区三区视频免费看| 久久理论片午夜琪琪电影网| 精品福利视频导航| 亚洲区一区二区| 亚洲国产成人久久| 欧美性少妇18aaaa视频| 久久精品精品电影网| 欧美整片在线观看| 国产自摸综合网| 久久成人这里只有精品| 亚洲欧洲在线免费| 亚洲国产成人av在线| 国产精品欧美激情| 欧洲中文字幕国产精品| 久久综合伊人77777尤物| 国产精品视频最多的网站|