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

MongoDB如何更新多級文檔的數(shù)據(jù)

 更新時間:2021年06月22日 10:39:39   作者:島上碼農(nóng)  
MongoDB 這類文檔型數(shù)據(jù)庫與關(guān)系型數(shù)據(jù)庫最大的差別就是所有數(shù)據(jù)是按文檔存儲的,因此更新時會涉及深層數(shù)據(jù)更新,例如更如何新某個對象的下級對象屬性。本篇介紹如何更新多級文檔的數(shù)據(jù)。

嵌套數(shù)組更新

以下面的數(shù)據(jù)(數(shù)據(jù)集名稱為author)為例:

{name: '島上碼農(nóng)', documents: ['Flutter入門與實戰(zhàn)', '高性能MySQL', 'MongoDB專業(yè)指北']}

我們需要將 MongoDB專業(yè)指北改成MongoDB不專業(yè)指北,就屬于修改嵌套的文檔數(shù)據(jù)了。這個時候需要使用到 MongoDB 提供的定位操作符$。定位操作符即表示將對應(yīng)條件匹配到的數(shù)據(jù),如:

db.author.update(
  {name: '島上碼農(nóng)', documents: 'MongoDB專業(yè)指北'}, 
  {'$set': {'documents.$': 'MongoDB不專業(yè)指北'}}
);

對于下級節(jié)點為數(shù)組的也是一樣。

{
  name: '島上碼農(nóng)', 
  documents: [
    {name: 'Flutter入門與實戰(zhàn)', score: 80}, 
    {name: '高性能MySQL', score: 90}, 
    {name: 'MongoDB專業(yè)指北', score: 85}
  ]
}

需要將 documengs 節(jié)點的 name 和 score 進行修改。

db.author.update(
  {name: '島上碼農(nóng)', 'documents.name': 'MongoDB專業(yè)指北'},
  {'$set': {
    	'documents.$.name': 'MongoDB不專業(yè)指北', 
    	'documents.$.score':88}
  }
);

$定位操作符即在查詢條件中找到的數(shù)組中的數(shù)據(jù)元素位置,即表示操作的是該位置的數(shù)據(jù)。

更新下級文檔的屬性

更新下級文檔屬性時可以直接使用屬性訪問符“.”,例如下面需要更新 praise 增加到291。

{
  name: '島上碼農(nóng)', 
  scores: {
    view:  18800, 
    praise: 290, 
    followers: 105
	}
}
db.author.update(
  {name: '島上碼農(nóng)'}, 
  {'$set': {'scores.praise': 291}}
);

下級文檔若還存在嵌套數(shù)組也是類似的操作,如下面的數(shù)據(jù),需要將“公眾號”換成“微信公眾號”:

{
  name: '島上碼農(nóng)', 
  scores: {
    view:  18800, 
    praise: 290, 
    followers: 105,
    platform: ['掘金', '公眾號']
	}
}
db.author.update(
  {'name': '島上碼農(nóng)', 'scores.platform': '公眾號'},
  {'$set': {'scores.platform.$':'微信公眾號'}}
);

屬性增加和移除

MongoDB提供了 $push 和 $pull操作指令來增加或移除屬性,同時還提供了 $pop 來移除數(shù)組的第一個或最后一個值。我們給前一個文檔增加一個 homepage 屬性。

db.author.update(
  {name: '島上碼農(nóng)'}, 
  {$push: {homepage: 'https://juejin.cn/user/70787819648695'}}
);

注意的是,此時插入的是一個名為 homepage 的數(shù)組,其中的一個元素是:juejin.cn/user/707878…。如果是增加不是數(shù)組的屬性,使用$set 指令即可。 可以使用 pull 移除掉匹配的一個屬性。

db.author.update(
  {name: '島上碼農(nóng)'}, 
  {$pull: {homepage: 'https://juejin.cn/user/70787819648695'}}
);

$pop 操作時使用數(shù)字-1和1表示移除首尾的元素,對于下面的數(shù)據(jù),移除數(shù)組platform里的數(shù)據(jù)。

{
  name: '島上碼農(nóng)',
	scores : {
		view: 18800,
		praise: 290,
		followers: 105,
		platform: ['掘金', '公眾號', '其他1', '其他2']
	}
}
// 移除第一個元素
db.author.update({name: '島上碼農(nóng)'}, {$pop: {'scores.platform': -1}});
// 移除最后一個元素
db.author.update({name: '島上碼農(nóng)'}, {$pop: {'scores.platform': 1}});

總結(jié)

本篇介紹了 MongoDB 的嵌套屬性更新操作,主要是定位操作符$的使用。通過定位符可以定位我們需要修改的數(shù)據(jù)位置,進而進行更新操作。以及屬性的添加和移除,通過$push、$pull和$pop指令即可完成響應(yīng)的操作。

以上就是MongoDB如何更新多級文檔的數(shù)據(jù)的詳細內(nèi)容,更多關(guān)于MongoDB 更新多級文檔的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 大數(shù)據(jù)環(huán)境下mongoDB為何要加索引淺析

    大數(shù)據(jù)環(huán)境下mongoDB為何要加索引淺析

    這篇文章主要給大家介紹了關(guān)于大數(shù)據(jù)環(huán)境下mongoDB為何要加索引的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用mongoDB具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-05-05
  • 深入分析Mongodb數(shù)據(jù)的導(dǎo)入導(dǎo)出

    深入分析Mongodb數(shù)據(jù)的導(dǎo)入導(dǎo)出

    這幾天想著公司要用MongoDB,自然就要用到數(shù)據(jù)導(dǎo)入導(dǎo)出,就自己學習了一下。本文介紹了mongoDb導(dǎo)入導(dǎo)出數(shù)據(jù)的方法,有需要的朋友參考下。
    2015-05-05
  • 如何利用MongoDB存儲Docker日志詳解

    如何利用MongoDB存儲Docker日志詳解

    這篇文章主要給大家介紹了關(guān)于如何利用MongoDB存儲Docker日志的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友沒呢下面隨著小編來一起學習學習吧
    2018-09-09
  • MongoDB4.28開啟權(quán)限認證配置用戶密碼登錄功能

    MongoDB4.28開啟權(quán)限認證配置用戶密碼登錄功能

    這篇文章主要介紹了MongoDB4.28開啟權(quán)限認證配置用戶名和密碼認證登錄,本文分步驟給大家介紹開啟認證登錄的方法,需要的朋友可以參考下
    2022-01-01
  • 批量清理mongodb歷史數(shù)據(jù)的方法詳解

    批量清理mongodb歷史數(shù)據(jù)的方法詳解

    這篇文章主要介紹了批量清理 MongoDB 歷史數(shù)據(jù)的相關(guān)內(nèi)容,包括項目因歷史數(shù)據(jù)積壓需清理,從臨時 shell 腳本改為用 Python 改造,新增備份功能和配置文件,還詳細介紹了多個相關(guān)函數(shù)的定義及功能,需要的朋友可以參考下
    2025-01-01
  • mongodb錯誤tcmalloc: large alloc out of memory, printing stack and exiting解決辦法

    mongodb錯誤tcmalloc: large alloc out of memory, printing stack

    這篇文章主要介紹了mongodb錯誤tcmalloc: large alloc out of memory, printing stack and exiting解決辦法,需要的朋友可以參考下
    2014-06-06
  • MongoDB特點與體系結(jié)構(gòu)等簡介

    MongoDB特點與體系結(jié)構(gòu)等簡介

    今天小編就為大家分享一篇關(guān)于MongoDB特點與體系結(jié)構(gòu)等簡介,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-01-01
  • 聊聊MongoDB?帶訪問控制的副本集部署問題

    聊聊MongoDB?帶訪問控制的副本集部署問題

    這篇文章主要介紹了MongoDB?帶訪問控制的副本集部署,本文給大家分享簡單的步驟幫助大家完成,對MongoDB副本集部署問題感興趣的朋友一起看看吧
    2022-02-02
  • MongoDB使用profile分析慢查詢的步驟

    MongoDB使用profile分析慢查詢的步驟

    這篇文章主要介紹了MongoDB profile分析慢查詢的示例,幫助大家更好的理解和學習使用MongoDB數(shù)據(jù)庫,感興趣的朋友可以了解下
    2021-04-04
  • MongoDB中的加減乘除運算詳解

    MongoDB中的加減乘除運算詳解

    這篇文章主要給大家介紹了關(guān)于MongoDB中加減乘除運算的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-01-01

最新評論

乳山市| 衡水市| 大渡口区| 绵阳市| 扶绥县| 泰来县| 章丘市| 达孜县| 石嘴山市| 浙江省| 沙洋县| 景德镇市| 江永县| 陇南市| 黄冈市| 东宁县| 安国市| 榆树市| 阿坝| 怀化市| 嘉定区| 隆德县| 正阳县| 大名县| 桑植县| 阜宁县| 娄底市| 湟中县| 乌兰察布市| 蕉岭县| 辽阳县| 山东省| 灵川县| 西宁市| 乌拉特后旗| 孟州市| 青神县| 临潭县| 阳城县| 博爱县| 墨江|