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

MongoDB查詢(xún)技巧總結(jié)

 更新時(shí)間:2014年05月03日 09:37:08   作者:  
這篇文章主要介紹了MongoDB查詢(xún)技巧總結(jié),例如AND、OR條件查詢(xún),子文檔查詢(xún)等,需要的朋友可以參考下

在MongoDB中db.collection.find()方法用于從集合中檢索文檔。db.collection.find()方法返回一個(gè)檢索到文檔的游標(biāo)。db.collection.findOne()方法也執(zhí)行讀操作,返回一條文檔。在內(nèi)部實(shí)現(xiàn)上,db.collection.findOne()方法是db.collection.find()使用limit 1。

查詢(xún)集合中的所有文檔:

1.一個(gè)空的query文檔({})可以查出一個(gè)集合中的所有文檔:

復(fù)制代碼 代碼如下:
db.inventory.find( {} )

2.沒(méi)有指定query文檔的find()等價(jià)于指定一個(gè)空query文檔的查詢(xún)。因此,下面的查詢(xún)和上面的查詢(xún)時(shí)等價(jià)的:

復(fù)制代碼 代碼如下:
db.inventory.find()

指定相等條件:
使用{<field>:<value>}文檔指定相等條件,查詢(xún)所有包含<field>字段,值為<value>的文檔。下面的例子從inventory集合中檢索所有type字段值為snacks的所有文檔:

復(fù)制代碼 代碼如下:
db.inventory.find( { type: "snacks" } )

使用query操作符指定條件:
在MongoDB中可以使用query操作符指定條件。下面的例子從inventory集合中查詢(xún)type字段的值為'food'或者'snacks':

復(fù)制代碼 代碼如下:
db.inventory.find( { type: { $in: [ 'food', 'snacks' ] } } )

雖然這個(gè)查詢(xún)可以使用$or操作符,但是對(duì)于同一個(gè)字段的相等檢測(cè)使用$in而不是$or。

指定AND條件:
符合查詢(xún)可以在條件中指定多個(gè)文檔字段。邏輯AND連接一起的復(fù)合查詢(xún)條件,查詢(xún)符合所有條件的文檔。下面例子中,query文檔指定等于food和price字段小于($lt)指定值的查詢(xún)條件:

復(fù)制代碼 代碼如下:
db.inventory.find( { type: 'food', price: { $lt: 9.95 } } )

這個(gè)查詢(xún)選擇所有type字段值等于food,而且price字段值小于9.95的文檔。

指定OR條件:
使用$or操作符,可以指定一個(gè)使用邏輯OR連接的復(fù)合查詢(xún),查詢(xún)選擇集合中至少匹配一個(gè)條件的文檔。下面的例子中,查詢(xún)集合中所有qty字段值大于($gt)100或者price字段值小于($lt)9.95的文檔:

復(fù)制代碼 代碼如下:
db.inventory.find(
    { $or: [
        { qty: { $gt: 100 } },
              { price: { $lt: 9.95 } }
      ]
    }
)

同時(shí)指定AND和OR條件:
使用更多的條件,可以指定精確的查詢(xún)條件。在下面的例子中,符合query文檔選擇集合中所有type字段值為'food',并且qty的值大于($gt)100或者price值小于($lt)9.95的文檔:

復(fù)制代碼 代碼如下:
db.inventory.find( { type: 'food', $or: [ { qty: { $gt: 100 } },
                                                  { price:{ $lt:9.95 } }
                                                ]
                          } )


子文檔:
         當(dāng)字段包含嵌入的文檔(即子文檔),可以指定整個(gè)子文檔作為一個(gè)字段的值,或使用點(diǎn)符號(hào)“進(jìn)入”子文件,指定該子文檔的各個(gè)字段的值:
1.精確匹配子文檔:
指定一個(gè)相等條件匹配整個(gè)子文檔,使用query文檔{<field>:<value>},<value>用于匹配子文檔?!跋嗟取逼ヅ渥游臋n需要子文檔的字段精確匹配<value>條件,包括字段的順序。下面的例子查詢(xún)producer字段的值匹配一個(gè)僅包含值為“ABC123”的company字段和值為“123 Street”的子文檔,并且有先后順序:
       
復(fù)制代碼 代碼如下:
db.inventory.find(
                             {
                                 producer: {
                                       company: 'ABC123',
                                       address: '123 Street' }
                             }
                          )


2.子文檔字段“相等”匹配:
查詢(xún)集合中指定字段的子文檔的字段包含指定條件的文檔。下面的例子使用點(diǎn)符號(hào)查詢(xún)producer的子文檔的conmpany字段值為“ABC123”的所有文檔:
       
復(fù)制代碼 代碼如下:
db.inventory.find( { 'producer.company': 'ABC123' } )

數(shù)組:
        當(dāng)字段值是一個(gè)數(shù)組時(shí),可以使用數(shù)組精確匹配或者在數(shù)組中指定值。如果數(shù)組元素是一個(gè)子文檔,可以使用點(diǎn)符號(hào)指定字段。
精確匹配數(shù)組:
        在數(shù)組中指定相等條件,使用query文檔{<field>:<value>},<value>是用于匹配的數(shù)組。數(shù)組的精確匹配需要數(shù)組的字段完全匹配指定的<value>,包括元素的順序:
       

復(fù)制代碼 代碼如下:
db.inventory.find( { tags: [ 'fruit', 'food', 'citrus' ] } )

匹配一個(gè)數(shù)組元素:
        可以在數(shù)組中指定一個(gè)單獨(dú)的元素用于"相等"匹配。這種規(guī)范匹配的數(shù)組至少需要包含一個(gè)指定的元素。下面的例子將匹所有tags是一個(gè)數(shù)組且包含"fruit"元素的文檔:
        
復(fù)制代碼 代碼如下:
db.inventory.find( { tags: 'fruit' } )

匹配數(shù)組的指定元素:
        在數(shù)組中匹配指定索引或位置與條件相等的文檔。下面例子中,使用點(diǎn)符號(hào)匹配所有tags是一個(gè)數(shù)組,且第一個(gè)元素是"fruit"的文檔:
       
復(fù)制代碼 代碼如下:
db.inventory.find( { 'tags.0' : 'fruit' } )

子文檔數(shù)組:

使用數(shù)組索引匹配子文檔的字段:
        如果知道子文檔數(shù)組的索引,就可以指定子文檔的位置。下面的例子查詢(xún)所有memo包含一個(gè)數(shù)組且第一個(gè)元素是一個(gè)子文檔,子文檔的by字段值為"shipping"的文檔:
       

復(fù)制代碼 代碼如下:
db.inventory.find( { 'memos.0.by': 'shipping' } )

匹配一個(gè)字段不使用數(shù)組索引:
        如果不知道子文檔的索引位置,使用點(diǎn)連接數(shù)組的字段名稱(chēng)和子文檔字段名稱(chēng)。下面的例子查詢(xún)所有memos字段是一個(gè)數(shù)組,且數(shù)組包含至少一個(gè)by字段值為"shipping"的子文檔的文檔:
       
復(fù)制代碼 代碼如下:
db.inventory.find( { 'memos.by': 'shipping' } )

匹配多個(gè)字段:
        為了在子文檔中匹配多個(gè)字段,可以使用點(diǎn)符號(hào)或者$elemMatch操作符。下面的例子使用點(diǎn)符號(hào)查詢(xún)memos字段值是一個(gè)數(shù)組,并且子文檔memo字段等于"on tiem",by字段等于"shipping"的文檔:
   
復(fù)制代碼 代碼如下:
db.inventory.find(
                       { 'memos.memo': 'on time', 'memos.by': 'shipping' }
                 )

        下面的例子使用$elemMatch操作符查詢(xún)memos字段值是一個(gè)數(shù)組,并且子文檔memo字段等于"on tiem",by字段等于"shipping"的文檔:
       
復(fù)制代碼 代碼如下:
db.inventory.find( {
                     memos: {
                                $elemMatch: {
                                              memo : 'on time',
                                              by: 'shipping' }
                            }
                   }
                 )

相關(guān)文章

  • MongoDB復(fù)制集原理詳解

    MongoDB復(fù)制集原理詳解

    這篇文章主要介紹了MongoDB復(fù)制集原理詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • MongoDB中多表關(guān)聯(lián)查詢(xún)($lookup)的深入講解

    MongoDB中多表關(guān)聯(lián)查詢(xún)($lookup)的深入講解

    NoSql的多表關(guān)聯(lián)一直是比較復(fù)雜的問(wèn)題,下面這篇文章主要給大家介紹了關(guān)于MongoDB中多表關(guān)聯(lián)查詢(xún)($lookup)的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2018-12-12
  • Windows 10下安裝最新版MongoDB的完整步驟

    Windows 10下安裝最新版MongoDB的完整步驟

    這篇文章主要給大家介紹了關(guān)于在Windows 10下安裝最新版MongoDB的完整步驟,文中通過(guò)圖文介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2018-10-10
  • MongoDB聚合分組取第一條記錄的案例與實(shí)現(xiàn)方法

    MongoDB聚合分組取第一條記錄的案例與實(shí)現(xiàn)方法

    這篇文章主要給大家介紹了關(guān)于MongoDB聚合分組取第一條記錄的案例與實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-01-01
  • Windows下把MongoDB安裝為系統(tǒng)服務(wù)的方法

    Windows下把MongoDB安裝為系統(tǒng)服務(wù)的方法

    這篇文章主要介紹了Windows下把MongoDB安裝為系統(tǒng)服務(wù)的方法,本文詳細(xì)介紹了將mongoDB安裝為WinXP下系統(tǒng)服務(wù)的過(guò)程,需要的朋友可以參考下
    2014-10-10
  • MongoDB插入數(shù)據(jù)的3種方法

    MongoDB插入數(shù)據(jù)的3種方法

    在MongoDB中,db.collection.insert()方法添加一個(gè)新文檔到集合中。另外,db.collection.update()方法和db.collection.save()方法也能通過(guò)upsert操作添加新文檔。upsert操作執(zhí)行更新現(xiàn)有文檔或者當(dāng)文檔不存在時(shí)插入一個(gè)新文檔。
    2014-05-05
  • Mongodb 崩潰報(bào)錯(cuò) Too many open files的問(wèn)題解析

    Mongodb 崩潰報(bào)錯(cuò) Too many open files的問(wèn)題解析

    這篇文章主要介紹了Mongodb 崩潰報(bào)錯(cuò) Too many open files的問(wèn)題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-12-12
  • 使用命令方式安裝MongoDB指南(Windows、Linux)

    使用命令方式安裝MongoDB指南(Windows、Linux)

    這篇文章主要介紹了使用命令方式安裝MongoDB指南,本文分別介紹Windows、Linux下使用命令的方式安裝mongodb,需要的朋友可以參考下
    2015-04-04
  • MongoDB利用oplog恢復(fù)數(shù)據(jù)的方法

    MongoDB利用oplog恢復(fù)數(shù)據(jù)的方法

    這篇文章主要介紹了MongoDB利用oplog恢復(fù)數(shù)據(jù)的方法,當(dāng)我們對(duì)數(shù)據(jù)出現(xiàn)誤操作的時(shí)候,可以利用oplog恢復(fù)數(shù)據(jù),下文操作過(guò)程需要的小伙伴可以參考一下
    2022-04-04
  • mongodb 數(shù)據(jù)庫(kù)操作--備份 還原 導(dǎo)出 導(dǎo)入

    mongodb 數(shù)據(jù)庫(kù)操作--備份 還原 導(dǎo)出 導(dǎo)入

    mongodb數(shù)據(jù)備份和還原主要分為二種,一種是針對(duì)于庫(kù)的mongodump和mongorestore,一種是針對(duì)庫(kù)中表的mongoexport和mongoimport。
    2014-07-07

最新評(píng)論