最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MongoDB如何對數(shù)組中的元素進(jìn)行查詢詳解

 更新時間:2017年10月27日 09:22:29   作者:鐵錨  
MongoDB在文檔上支持?jǐn)?shù)組,其次數(shù)組上可以實現(xiàn)嵌套,以及數(shù)組元素也可以文檔。所以下面這篇文章主要給大家介紹了關(guān)于MongoDB如何對數(shù)組中元素進(jìn)行查詢的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面來一起看看吧。

前言

MongoDB是文檔型數(shù)據(jù)庫,每個文檔(doc)表示數(shù)據(jù)的一項記錄。相比關(guān)系型DB的row只能使用簡單的數(shù)據(jù)類型,doc能夠使用復(fù)雜的數(shù)據(jù)類型:內(nèi)嵌doc,數(shù)組。MongoDB的數(shù)組是一系列元素的集合,使用中括號 [] 表示數(shù)組,例如:[1,2,3]的元素是整數(shù)值,[{name:"t5"}, {name:"t7"}],[ {name:"t5", age:21}, {name:"t7", age:22} ]的元素是doc。

在MongoDB中,數(shù)組元素允許重復(fù),元素的位置是固定的。如果兩個數(shù)組相等,那么這兩個數(shù)組的元素和及其位置都相同。

MongoDB中根據(jù)數(shù)組子元素進(jìn)行匹配,有兩種方式。

  • 使用 “[數(shù)組名].[子元素字段名]” 的方式進(jìn)行匹配。
  • 使用 “[數(shù)組名]” $elemMatch { [子元素字段名] }的方式。

不同點在于所匹配的主體不同。

“[數(shù)組名].[子元素字段名]” 的方式匹配的主體為 “[數(shù)組名]”, 適用于單個條件,如果是多個條件, 則變成數(shù)組子元素之間的“或”運算。

請看示例:

假設(shè)某個集合內(nèi)有2條數(shù)據(jù):

document1 如下:

{ 
 "_id" : "123", 
 "name" : "人文醫(yī)學(xué)", 
 "qList" : [
  {
   "qid" : 1, 
   "content" : "醫(yī)學(xué)倫理學(xué)的公正原則", 
   "reorderFlag" : 1
  }, 
  {
   "qid" : 2, 
   "content" : "制定有關(guān)人體實驗的基本原則", 
   "reorderFlag" : 0
  }
 ]
}

document2 如下:

{ 
 "_id" : "124", 
 "name" : "人文醫(yī)學(xué)2", 
 "qList" : [
  {
   "qid" : 1, 
   "content" : "醫(yī)學(xué)倫理學(xué)的公正原則", 
   "reorderFlag" : 0
  }, 
  {
   "qid" : 2, 
   "content" : "制定有關(guān)人體實驗的基本原則", 
   "reorderFlag" : 1
  }
 ]
}

找出數(shù)組中, 具有 qid=1并且reorderFlag=0的記錄

查詢數(shù)組內(nèi)同一條記錄同時滿足2個條件的語句:

{ "qList": { $elemMatch: { "qid": 1, "reorderFlag": 0} } }

查詢結(jié)果是:

{ 
 "_id" : "124", 
 "name" : "人文醫(yī)學(xué)2", 
 "qList" : [
  {
   "qid" : NumberInt(1), 
   "content" : "醫(yī)學(xué)倫理學(xué)的公正原則", 
   "reorderFlag" : NumberInt(0)
  }, 
  {
   "qid" : NumberInt(2), 
   "content" : "制定有關(guān)人體實驗的基本原則", 
   "reorderFlag" : NumberInt(1)
  }
 ]
}

可以看到, 其執(zhí)行結(jié)果是, 對數(shù)組內(nèi)的每一個子元素, 執(zhí)行 $elemMatch 匹配, 可以進(jìn)行多個條件的匹配。

找出數(shù)組中, qid=1 或者 reorderFlag=0的記錄

數(shù)組整體能滿足以下2個條件:

{ "qList.qid": 1, "qList.reorderFlag": 0}

執(zhí)行的主體是 qList, 要求: 有某些子元素滿足 qid=1, 也要有某些子元素滿足 reorderFlag=0`。

查詢結(jié)果是:

{ 
 "_id" : "123", 
 "name" : "人文醫(yī)學(xué)", 
 "qList" : [
  {
   "qid" : NumberInt(1), 
   "content" : "醫(yī)學(xué)倫理學(xué)的公正原則", 
   "reorderFlag" : NumberInt(1)
  }, 
  {
   "qid" : NumberInt(2), 
   "content" : "制定有關(guān)人體實驗的基本原則", 
   "reorderFlag" : NumberInt(0)
  }
 ]
}
{ 
 "_id" : "124", 
 "name" : "人文醫(yī)學(xué)2", 
 "qList" : [
  {
   "qid" : NumberInt(1), 
   "content" : "醫(yī)學(xué)倫理學(xué)的公正原則", 
   "reorderFlag" : NumberInt(0)
  }, 
  {
   "qid" : NumberInt(2), 
   "content" : "制定有關(guān)人體實驗的基本原則", 
   "reorderFlag" : NumberInt(1)
  }
 ]
}

可以看到, 其執(zhí)行結(jié)果是, 對數(shù)組進(jìn)行匹配, 其中需要有子元素 滿足 "qList.qid": 1, 還需要有子元素 滿足 "qList.qid": 1, , 適合進(jìn)行單個條件的匹配。

如果是單個條件匹配, 則以下方式結(jié)果是一樣的。

{ "qList.qid": 1}

或者

{ "qList": { $elemMatch: { "qid": 1} } }

查詢的結(jié)果都是2條記錄。

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

相關(guān)文章

  • MongoDB進(jìn)階之動態(tài)字段設(shè)計詳解

    MongoDB進(jìn)階之動態(tài)字段設(shè)計詳解

    這篇文章主要給大家介紹了MongoDB進(jìn)階之動態(tài)字段設(shè)計的相關(guān)資料,文中介紹的非常詳細(xì),對大家具有一定的參考學(xué)習(xí)價值,需要的朋友們下面跟著小編一起來學(xué)習(xí)學(xué)習(xí)吧。
    2017-06-06
  • MongoDB 管道的介紹及操作符實例

    MongoDB 管道的介紹及操作符實例

    這篇文章主要介紹了MongoDB 管道的介紹及操作符實例的相關(guān)資料,MongoDB的聚合管道將MongoDB文檔在一個管道處理完畢后將結(jié)果傳遞給下一個管道處理,需要的朋友可以參考下
    2017-07-07
  • MongoDB 3.4配置文件避免入坑的注意事項

    MongoDB 3.4配置文件避免入坑的注意事項

    最近在配置mongodb的時候遇到了一些問題,現(xiàn)總結(jié)出來方便以后需要或同樣遇到該問題的朋友們參考,下面這篇文章主要給大家介紹了關(guān)于MongoDB 3.4配置文件時避免入坑的兩個注意事項,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)下吧。
    2017-09-09
  • MongoDB中單對象大小超16M的存儲方案

    MongoDB中單對象大小超16M的存儲方案

    在 MongoDB 中,單個文檔的大小限制為 16MB,如果某個對象(文檔)的大小超過 16MB該怎么辦,所以本文給大家介紹了MongoDB中單對象大小超16M的存儲方案,需要的朋友可以參考下
    2025-01-01
  • MongoDB運行日志實現(xiàn)自動分割的方法實例

    MongoDB運行日志實現(xiàn)自動分割的方法實例

    這篇文章主要給大家介紹了關(guān)于MongoDB運行日志實現(xiàn)自動分割的方法,文中以一個MongoDB實例為例,寫了一個腳本來實現(xiàn)自動分割MongoDB日志,有需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-01-01
  • MongoDB中的常用操作$push、$pushAll和$pull示例詳解

    MongoDB中的常用操作$push、$pushAll和$pull示例詳解

    MongoDB從2.2版本開始支持$push操作符,$push是用于在數(shù)組中添加一個元素的更新操作符,它將指定的值追加到數(shù)組的末尾,本文給大家介紹MongoDB的常用操作$push、$pushAll和$pull,感興趣的朋友一起看看吧
    2023-12-12
  • 初識NoSQL NoSql數(shù)據(jù)庫入門 NoSql數(shù)據(jù)庫基礎(chǔ)知識

    初識NoSQL NoSql數(shù)據(jù)庫入門 NoSql數(shù)據(jù)庫基礎(chǔ)知識

    大家有沒有聽說過“NoSQL”呢?大家可能會誤以為是“No!SQL”的縮寫,但實際上,它是“Not Only SQL”的縮寫。它的意義是:適用關(guān)系型數(shù)據(jù)庫的時候就使用關(guān)系型數(shù)據(jù)庫,不適用的時候也沒有必要非使用關(guān)系型數(shù)據(jù)庫不可,可以考慮使用更加合適的數(shù)據(jù)存儲。
    2014-08-08
  • MongoDB基礎(chǔ)之文檔操作

    MongoDB基礎(chǔ)之文檔操作

    這篇文章介紹了MongoDB基礎(chǔ)之文檔操作,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-06-06
  • MongoDB入門教程之常用的運維技術(shù)介紹

    MongoDB入門教程之常用的運維技術(shù)介紹

    這篇文章主要介紹了MongoDB入門教程之常用的運維技術(shù)介紹,講解了安裝部署、狀態(tài)監(jiān)控、安全認(rèn)證、備份和恢復(fù)等內(nèi)容,需要的朋友可以參考下
    2014-08-08
  • MongoDB中的push操作詳解(將文檔插入到數(shù)組)

    MongoDB中的push操作詳解(將文檔插入到數(shù)組)

    $push操作符添加指定的值到數(shù)組中,下面這篇文章主要給大家介紹了關(guān)于MongoDB中push操作(將文檔插入到數(shù)組)的相關(guān)資料,文中通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-11-11

最新評論

丘北县| 庆阳市| 台东县| 廉江市| 晋江市| 河津市| 大新县| 邢台县| 石首市| 阿瓦提县| 茌平县| 竹山县| 镇沅| 余江县| 江油市| 凌海市| 津市市| 静宁县| 黄梅县| 阜平县| 克东县| 铜鼓县| 衡东县| 灵山县| 三原县| 肇州县| 静安区| 太湖县| 宣城市| 营口市| 任丘市| 凉城县| 南涧| 建瓯市| 光泽县| 彭泽县| 张家港市| 巴彦县| 城步| 法库县| 略阳县|