欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時(shí)間:2017年09月23日 09:00:59   投稿:lqh  
這篇文章主要介紹了MongoDB 查詢操作的實(shí)例的相關(guān)資料,希望通過本文能幫助到大家,需要的朋友可以參考下

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

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

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

1.指定需要返回的鍵

有時(shí)候僅僅對(duì)文檔的某幾個(gè)鍵值感興趣,可以屏蔽返回的不感興趣的鍵值,返回感興趣的鍵值

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” 分別對(duì)應(yīng) <,<=,>,>=。

小貼士:在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”<來查詢文件插入的時(shí)間

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)用于多個(gè)元素匹配數(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” ] }

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

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

2.$size

查詢特定長(zhǎng)度的數(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ù)組中添加元素,同時(shí)增加“size”的值,自增操作非???,對(duì)性能不影響。

3.slice

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

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

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

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

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

5.limit、skip和sort

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

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

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

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

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

var page1=db.stock.find({“des”:”mp3”}).limit(50).sort({“price”:-1}) 
var lastest=null;//解決方法,將游標(biāo)最后一個(gè)文檔記錄下來,成為第二次查詢的條件的一部分 
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ī)選取文檔

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

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

相關(guān)文章

  • window下mongodb在dos下服務(wù)器啟動(dòng)及連接

    window下mongodb在dos下服務(wù)器啟動(dòng)及連接

    這篇文章主要介紹了window下mongodb在dos下服務(wù)器啟動(dòng)及連接的相關(guān)資料,需要的朋友可以參考下
    2017-06-06
  • MongoDB 管道的介紹及操作符實(shí)例

    MongoDB 管道的介紹及操作符實(shí)例

    這篇文章主要介紹了MongoDB 管道的介紹及操作符實(shí)例的相關(guān)資料,MongoDB的聚合管道將MongoDB文檔在一個(gè)管道處理完畢后將結(jié)果傳遞給下一個(gè)管道處理,需要的朋友可以參考下
    2017-07-07
  • Linux安裝MongoDB?4.0.3詳細(xì)步驟

    Linux安裝MongoDB?4.0.3詳細(xì)步驟

    這篇文章主要介紹了Linux安裝MongoDB?4.0.3詳細(xì)步驟的相關(guān)資料,需要的朋友可以參考下
    2023-06-06
  • CentOS 安裝 Mogodb的步驟(在線&&離線兩種)

    CentOS 安裝 Mogodb的步驟(在線&&離線兩種)

    這篇文章主要介紹了CentOS 安裝 Mogodb的步驟(在線&&離線兩種),需要的朋友可以參考下
    2017-03-03
  • MongoDB按時(shí)間分組操作實(shí)戰(zhàn)

    MongoDB按時(shí)間分組操作實(shí)戰(zhàn)

    MongoDB支持使用聚合操作來統(tǒng)計(jì)數(shù)據(jù),下面這篇文章主要給大家介紹了關(guān)于MongoDB按時(shí)間分組操作的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-05-05
  • Centos 7.2中MongoDB數(shù)據(jù)庫的安裝與卸載教程

    Centos 7.2中MongoDB數(shù)據(jù)庫的安裝與卸載教程

    這篇文章主要給大家介紹了關(guān)于在Centos 7.2中MongoDB數(shù)據(jù)庫的安裝與卸載的相關(guān)資料,文中還給大家總結(jié)了在過程中可能會(huì)遇到的一些問題的解決方法,需要的朋友可以參考借鑒,下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2018-03-03
  • mongodb root用戶創(chuàng)建數(shù)據(jù)庫提示not master的解決

    mongodb root用戶創(chuàng)建數(shù)據(jù)庫提示not master的解決

    這篇文章主要介紹了mongodb root用戶創(chuàng)建數(shù)據(jù)庫提示not master的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。
    2023-02-02
  • MongoDB的$sample、aggregate和$rand實(shí)現(xiàn)隨機(jī)選取數(shù)據(jù)

    MongoDB的$sample、aggregate和$rand實(shí)現(xiàn)隨機(jī)選取數(shù)據(jù)

    在MongoDB中,我們可以使用內(nèi)置的$sample聚合操作符來隨機(jī)生成數(shù)據(jù),$sample可以從集合文檔中隨機(jī)選擇指定數(shù)量的文檔,但由于其查詢整個(gè)集合的性能問題,應(yīng)該慎用,aggregate方法以及$rand函數(shù)的結(jié)合使用可以實(shí)現(xiàn)更加靈活的查詢操作,并且可以對(duì)查詢結(jié)果進(jìn)行精細(xì)篩選
    2024-01-01
  • 解決net start MongoDB 報(bào)錯(cuò)之服務(wù)名無效的問題

    解決net start MongoDB 報(bào)錯(cuò)之服務(wù)名無效的問題

    這篇文章主要介紹了解決net start MongoDB 報(bào)錯(cuò)之服務(wù)名無效的問題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-12-12
  • mongodb?linux下集群搭建過程

    mongodb?linux下集群搭建過程

    這篇文章主要介紹了mongodb?linux下集群搭建過程,本例中,為每個(gè)集群(shard?config)三個(gè)mongo實(shí)例,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-02-02

最新評(píng)論