久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

怎么在MongoDB中對數組中的元素進行查詢

151次閱讀
沒有評論

共計 2002 個字符,預計需要花費 6 分鐘才能閱讀完成。

自動寫代碼機器人,免費開通

怎么在 MongoDB 中對數組中的元素進行查詢?相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。

前言

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

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

MongoDB 中根據數組子元素進行匹配, 有兩種方式。

使用“[數組名].[子元素字段名]”的方式進行匹配。

使用“[數組名]”$elemMatch {[ 子元素字段名] } 的方式。

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

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

請看示例:

假設某個集合內有 2 條數據:

document1 如下:

{ 
  _id  :  123 , 
  name  :  人文醫學 , 
  qList  : [
 {
  qid  : 1, 
  content  :  醫學倫理學的公正原則 , 
  reorderFlag  : 1
 }, 
 {
  qid  : 2, 
  content  :  制定有關人體實驗的基本原則 , 
  reorderFlag  : 0
 }
 ]
}

document2 如下:

{ 
  _id  :  124 , 
  name  :  人文醫學 2 , 
  qList  : [
 {
  qid  : 1, 
  content  :  醫學倫理學的公正原則 , 
  reorderFlag  : 0
 }, 
 {
  qid  : 2, 
  content  :  制定有關人體實驗的基本原則 , 
  reorderFlag  : 1
 }
 ]
}

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

查詢數組內同一條記錄同時滿足 2 個條件的語句:

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

查詢結果是:

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

可以看到, 其執行結果是, 對數組內的每一個子元素, 執行 $elemMatch 匹配, 可以進行多個條件的匹配。

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

數組整體能滿足以下 2 個條件:

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

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

查詢結果是:

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

可以看到, 其執行結果是, 對數組進行匹配, 其中需要有子元素 滿足 qList.qid : 1, 還需要有子元素 滿足 qList.qid : 1, , 適合進行單個條件的匹配。

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

{  qList.qid : 1}

或者

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

查詢的結果都是 2 條記錄。

看完上述內容,你們掌握怎么在 MongoDB 中對數組中的元素進行查詢的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注丸趣 TV 行業資訊頻道,感謝各位的閱讀!

向 AI 問一下細節

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-12-16發表,共計2002字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 化德县| 景泰县| 镇沅| 石楼县| 镇坪县| 法库县| 登封市| 玉田县| 日喀则市| 米易县| 奎屯市| 蓝山县| 普格县| 瓦房店市| 卓资县| 饶平县| 杨浦区| 江山市| 和田县| 茂名市| 隆林| 什邡市| 西安市| 遵义市| 九江县| 灵璧县| 永康市| 渝中区| 边坝县| 泰顺县| 增城市| 伊宁县| 南川市| 鄢陵县| 湄潭县| 奉贤区| 越西县| 荆州市| 平阴县| 广元市| 大余县|