濮阳杆衣贸易有限公司

主頁 > 知識庫 > MongoDB 查詢操作的實(shí)例詳解

MongoDB 查詢操作的實(shí)例詳解

熱門標(biāo)簽:怎么投訴地圖標(biāo)注 電銷機(jī)器人是什么軟件 杭州人工電銷機(jī)器人價格 廣州長安公司怎樣申請400電話 呼和浩特電銷外呼系統(tǒng)加盟 云南外呼系統(tǒng) 蘋果汽車租賃店地圖標(biāo)注 老虎洗衣店地圖標(biāo)注 濟(jì)南電銷機(jī)器人加盟公司

MongoDB 查詢操作的實(shí)例詳解

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

針對游標(biāo)返回的文檔(結(jié)果集) 進(jìn)行操作 例如:忽略一定數(shù)量的結(jié)果,或者返回結(jié)果的數(shù)量,以及對結(jié)果的排序。

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” }

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

2.查詢條件

比較操作符

"$lt"、"$lte"、“$gt”,“$gte” 分別對應(yīng) ,=,>,>=。

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

mongos> var insertName=function(){ 
… for(var i=0;i10;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.查詢數(shù)組

1.$all

應(yīng)用于多個元素匹配數(shù)組,且并無順序。

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” ] }

對數(shù)組進(jìn)行精確匹配,可以使用key.index語法指定下標(biāo)

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

2.$size

查詢特定長度的數(shù)組。

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” ] }

可以再存有數(shù)組的文檔中添加size鍵,每一次向指定數(shù)組中添加元素,同時增加“size”的值,自增操作非??欤瑢π阅懿挥绊?。

3.slice

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

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

4.查詢內(nèi)嵌文檔

點(diǎn)語法即可

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

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

db.blog.find({“comments”:{“$elemMatch”:

{“author”:”joe”,”score”:{“$gte”:5}}}})

5.limit、skip和sort

三個方法可以組合進(jìn)行分頁.

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

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

然而略過太多會導(dǎo)致性能問題。

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

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

隨機(jī)選取文檔

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

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

您可能感興趣的文章:
  • MongoDB如何查詢耗時記錄的方法詳解
  • Mongodb實(shí)現(xiàn)的關(guān)聯(lián)表查詢功能【population方法】
  • Node.js對MongoDB數(shù)據(jù)庫實(shí)現(xiàn)模糊查詢的方法
  • 在php7中MongoDB實(shí)現(xiàn)模糊查詢的方法詳解
  • MongoDB數(shù)據(jù)查詢方法干貨篇
  • Java操作MongoDB模糊查詢和分頁查詢
  • MongoDB查詢性能優(yōu)化驗(yàn)證及驗(yàn)證

標(biāo)簽:興安盟 遼陽 雞西 玉林 廈門 泰安 無錫 自貢

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《MongoDB 查詢操作的實(shí)例詳解》,本文關(guān)鍵詞  MongoDB,查詢,操作,的,實(shí)例,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《MongoDB 查詢操作的實(shí)例詳解》相關(guān)的同類信息!
  • 本頁收集關(guān)于MongoDB 查詢操作的實(shí)例詳解的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    海阳市| 横山县| 隆化县| 东山县| 阿鲁科尔沁旗| 微山县| 那坡县| 嘉义市| 永寿县| 双流县| 博爱县| 娄烦县| 尼勒克县| 花莲县| 阳城县| 彰武县| 昌黎县| 连州市| 会东县| 准格尔旗| 宜州市| 卓资县| 万年县| 游戏| 巴楚县| 临猗县| 凤凰县| 海门市| 泗水县| 昆山市| 嘉定区| 武邑县| 孟连| 德阳市| 离岛区| 瑞丽市| 镇宁| 沙田区| 个旧市| 阿图什市| 临夏市|