中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

MONGODB 中怎么嵌套數組

發布時間:2021-08-12 15:39:53 來源:億速云 閱讀:160 作者:Leah 欄目:大數據

本篇文章為大家展示了MONGODB 中怎么嵌套數組,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

例如:我們舉個例子,一對少 

如我們有一個客戶,他的地址信息,一般來說不是房哥,房嫂的情況下,一個人得房產信息,一個手的手指頭就夠了。所以我這里定義為 一對少的關系。

{  

name: 'super_man',

id:'109838973',

addresses:[

{city:'北京',district:'朝陽區',street:'xcecdieei'},

{city:'上海',district:'虹橋區',street:'werdfsrew'}

]

}

首先我們先明確兩點,任何設計都有優點,和缺點,這一般都是并存的,沒有說我的設計十全十美,這里為什么要使用數組,原因是查詢的時候,可以一并帶出地址信息,而地址信息一般不會是直接單獨作為查詢條件來進行查詢的。

一句話:這樣的設計不必單獨查詢來獲取嵌入的信息,但無法將嵌入的細節作為獨立的實體訪問。

而一對多的例子可以我們可以假設,我們有一個銷售系統,我們里面有很多老客戶的信息,而每次他們訂購產品也都是組團進行購買,每個產品需要有購買產品的客戶信息。

我們可以建議一個collection 來存儲客戶的信息

MONGODB 中怎么嵌套數組

同時在建立一個訂購產品的 collection  ,將訂購某個產品的用戶信息存儲在一個 document 中

MONGODB 中怎么嵌套數組

上面就是一個處理一對多的MONGODB 中的一種設計方法,這樣設計的好處是,他們都作為一個獨立的文檔,可以更快的更新,但每次查詢就需要兩步來走,而不是通過一個查詢就可以獲得所要的數據,例如要某個訂單的所有客戶的地址信息。

個人領會,MONGODB collection 的設計,要考慮后期的查詢便利性和數據更改的便利性,太復雜的多層嵌套數組,是不利于MONGODB 的查詢和分析的。

我們以 mongodb 3.6  作為一個錨點,

我們先不考慮那種設計更好,我們先根據一個已經成型的設計來看看(以下信息來自于一個成熟的第三方接口返回的信息,部分敏感數據已經更改或覆蓋),這樣的設計給數據的 UDPATE 和 Find 帶來的是什么,然后我們就可以知道,那樣的設計更適合某些場景。

我們下面有這樣一個文檔,我們想更改queryConditions  里面的name 為yesyesyes 的記錄,改為nono

MONGODB 中怎么嵌套數組

我們使用下面的語句來進行相關的更改,這里涉及了 MONGODB 里面關于數組的 $ 占位符。

db.py_queryfraud.update(

  {"documentno":"130532199001108012","data.cisReport.queryConditions.$.name":"yesyesyes"},

  {$set:{"data.cisReport.0.queryConditions.$.name":"nono"}})

我們可以看到人,第一個符號條件的嵌套數組的name 值已經更改為我們指定的,而其他的值name 的值還都是yesyesyes

MONGODB 中怎么嵌套數組

而使用通配符,也是有場景限制的

1 使用upsert 操作中是不允許有 $ 符號的

2 位置$操作符不能用于遍歷多個數組的查詢,例如遍歷嵌套在其他數組中的數組的查詢,因為$占位符的替換是單個值

3 當與$unset操作符一起使用時,位置$操作符不會從數組中刪除匹配的元素,而是將其設置為null。

4 如果查詢使用否定運算符(如$ne、$not或$nin)匹配數組,則不能使用位置運算符從該數組更新值。但是,如果查詢的否定部分位于$elemMatch表達式中,則可以使用位置操作符更新該字段。

上述內容就是MONGODB 中怎么嵌套數組,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

昆明市| 贵州省| 彭山县| 道真| 元谋县| 年辖:市辖区| 丹凤县| 石门县| 南通市| 香格里拉县| 青川县| 台南市| 江源县| 六枝特区| 青田县| 渑池县| 城固县| 湟源县| 抚远县| 济南市| 商城县| 通城县| 荆州市| 临武县| 建宁县| 灌南县| 屯留县| 保亭| 大英县| 泗洪县| 虎林市| 新竹市| 驻马店市| 永安市| 云龙县| 东阳市| 天水市| 浠水县| 阿克陶县| 宁明县| 玉田县|