91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

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

景谷| 和田市| 合山市| 广河县| 郓城县| 新乡县| 盈江县| 井研县| 淅川县| 万年县| 汽车| 宁陵县| 西吉县| 武功县| 南乐县| 马公市| 文成县| 舞阳县| 钦州市| 潼南县| 恩施市| 邹城市| 来宾市| 东明县| 东辽县| 巴马| 东兴市| 嘉峪关市| 建水县| 通山县| 阳原县| 乐都县| 卫辉市| 班戈县| 周口市| 乌鲁木齐县| 谢通门县| 平原县| 色达县| 克什克腾旗| 西盟|