a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

首頁 > 數據庫 > 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頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 久久91精品国产 | 国产成人av一区二区三区 | 久久午夜电影 | 激情欧美一区 | 国产成人精品一区二区三区网站观看 | 一区二区三区四区在线视频 | 成人午夜电影在线 | 性做久久久久久久免费看 | 久久国产成人午夜av影院宅 | 另类天堂 | 狠狠操中文字幕 | 国产精品久久久久久一区二区三区 | 中文字幕av免费 | 欧美日韩精选 | 久久久久久久久久久免费视频 | 二区精品| 国产精品第一国产精品 | 91精品国产欧美一区二区成人 | 午夜精品久久久 | 日韩中文字幕无码一区二区三区 | 国产成人午夜高潮毛片 | 精品免费视频 | 欧美视频一区二区三区四区 | 国产视频福利一区 | 日韩大片一区 | 超碰免费在线观看 | 久久爱综合 | 中文字幕日韩欧美 | 亚洲黄色一级毛片 | 午夜精品久久久久久久男人的天堂 | 91中文字幕在线观看 | 自拍偷拍精品 | 国产成人精品亚洲777人妖 | 在线观看成人网 | 国产 日韩 欧美 中文 在线播放 | 国产99热 | 日韩在线中文字幕 | 久久精品国产77777蜜臀 | 久久黄色 | 超碰国产在线 | 国产精品久久久久久久久 |