MongoDB如何更新多級(jí)文檔的數(shù)據(jù)
嵌套數(shù)組更新
以下面的數(shù)據(jù)(數(shù)據(jù)集名稱為author)為例:
{name: '島上碼農(nóng)', documents: ['Flutter入門與實(shí)戰(zhàn)', '高性能MySQL', 'MongoDB專業(yè)指北']}
我們需要將 MongoDB專業(yè)指北改成MongoDB不專業(yè)指北,就屬于修改嵌套的文檔數(shù)據(jù)了。這個(gè)時(shí)候需要使用到 MongoDB 提供的定位操作符$。定位操作符即表示將對(duì)應(yīng)條件匹配到的數(shù)據(jù),如:
db.author.update( {name: '島上碼農(nóng)', documents: 'MongoDB專業(yè)指北'}, {'$set': {'documents.$': 'MongoDB不專業(yè)指北'}} );
對(duì)于下級(jí)節(jié)點(diǎn)為數(shù)組的也是一樣。
{ name: '島上碼農(nóng)', documents: [ {name: 'Flutter入門與實(shí)戰(zhàn)', score: 80}, {name: '高性能MySQL', score: 90}, {name: 'MongoDB專業(yè)指北', score: 85} ] }
需要將 documengs 節(jié)點(diǎn)的 name 和 score 進(jìn)行修改。
db.author.update( {name: '島上碼農(nóng)', 'documents.name': 'MongoDB專業(yè)指北'}, {'$set': { 'documents.$.name': 'MongoDB不專業(yè)指北', 'documents.$.score':88} } );
$定位操作符即在查詢條件中找到的數(shù)組中的數(shù)據(jù)元素位置,即表示操作的是該位置的數(shù)據(jù)。
更新下級(jí)文檔的屬性
更新下級(jí)文檔屬性時(shí)可以直接使用屬性訪問符“.”,例如下面需要更新 praise 增加到291。
{ name: '島上碼農(nóng)', scores: { view: 18800, praise: 290, followers: 105 } }
db.author.update( {name: '島上碼農(nóng)'}, {'$set': {'scores.praise': 291}} );
下級(jí)文檔若還存在嵌套數(shù)組也是類似的操作,如下面的數(shù)據(jù),需要將“公眾號(hào)”換成“微信公眾號(hào)”:
{ name: '島上碼農(nóng)', scores: { view: 18800, praise: 290, followers: 105, platform: ['掘金', '公眾號(hào)'] } }
db.author.update( {'name': '島上碼農(nóng)', 'scores.platform': '公眾號(hào)'}, {'$set': {'scores.platform.$':'微信公眾號(hào)'}} );
屬性增加和移除
MongoDB提供了 $push 和 $pull操作指令來增加或移除屬性,同時(shí)還提供了 $pop 來移除數(shù)組的第一個(gè)或最后一個(gè)值。我們給前一個(gè)文檔增加一個(gè) homepage 屬性。
db.author.update( {name: '島上碼農(nóng)'}, {$push: {homepage: 'https://juejin.cn/user/70787819648695'}} );
注意的是,此時(shí)插入的是一個(gè)名為 homepage 的數(shù)組,其中的一個(gè)元素是:juejin.cn/user/707878…。如果是增加不是數(shù)組的屬性,使用$set 指令即可。 可以使用 pull 移除掉匹配的一個(gè)屬性。
db.author.update( {name: '島上碼農(nóng)'}, {$pull: {homepage: 'https://juejin.cn/user/70787819648695'}} );
$pop 操作時(shí)使用數(shù)字-1和1表示移除首尾的元素,對(duì)于下面的數(shù)據(jù),移除數(shù)組platform里的數(shù)據(jù)。
{ name: '島上碼農(nóng)', scores : { view: 18800, praise: 290, followers: 105, platform: ['掘金', '公眾號(hào)', '其他1', '其他2'] } }
// 移除第一個(gè)元素 db.author.update({name: '島上碼農(nóng)'}, {$pop: {'scores.platform': -1}}); // 移除最后一個(gè)元素 db.author.update({name: '島上碼農(nóng)'}, {$pop: {'scores.platform': 1}});
總結(jié)
本篇介紹了 MongoDB 的嵌套屬性更新操作,主要是定位操作符$的使用。通過定位符可以定位我們需要修改的數(shù)據(jù)位置,進(jìn)而進(jìn)行更新操作。以及屬性的添加和移除,通過$push、$pull和$pop指令即可完成響應(yīng)的操作。
以上就是MongoDB如何更新多級(jí)文檔的數(shù)據(jù)的詳細(xì)內(nèi)容,更多關(guān)于MongoDB 更新多級(jí)文檔的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
- 分布式文檔存儲(chǔ)數(shù)據(jù)庫之MongoDB訪問控制的操作方法
- 分布式文檔存儲(chǔ)數(shù)據(jù)庫之MongoDB備份與恢復(fù)的實(shí)踐詳解
- 分布式文檔存儲(chǔ)數(shù)據(jù)庫之MongoDB分片集群的問題
- SpringDataMongoDB多文檔事務(wù)的實(shí)現(xiàn)
- mongodb如何對(duì)文檔內(nèi)數(shù)組進(jìn)行過濾的方法步驟
- MongoDB中文檔的更新操作示例詳解
- MongoDB數(shù)據(jù)庫文檔操作方法(必看篇)
- mongodb 數(shù)據(jù)類型(null/字符串/數(shù)字/日期/內(nèi)嵌文檔/數(shù)組等)
- PHP庫 查詢Mongodb中的文檔ID的方法
相關(guān)文章
MongoDB備份、還原、導(dǎo)出、導(dǎo)入、克隆操作示例
這篇文章主要介紹了MongoDB備份、還原、導(dǎo)出、導(dǎo)入、克隆操作示例,本文分別給操作代碼、命令實(shí)例,需要的朋友可以參考下2015-07-07Mongodb增加、移除Arbiter節(jié)點(diǎn)實(shí)例
這篇文章主要介紹了Mongodb增加、移除Arbiter節(jié)點(diǎn)實(shí)例,Arbiter是搭建Mongodb集群的一個(gè)必備節(jié)點(diǎn),需要的朋友可以參考下2015-01-01在MongoDB中實(shí)現(xiàn)大于小于查詢功能
MongoDB是一個(gè)高性能、開源、無模式的文檔型數(shù)據(jù)庫,它使用BSON(Binary JSON)作為存儲(chǔ)格式,支持豐富的查詢語法,本文將詳細(xì)介紹如何在MongoDB中實(shí)現(xiàn)大于小于查詢,文中有詳細(xì)的代碼示例供大家參考,需要的朋友可以參考下2024-08-08Windows下MongoDB配置用戶權(quán)限實(shí)例
這篇文章主要介紹了Windows下MongoDB配置用戶權(quán)限實(shí)例,本文實(shí)現(xiàn)需要輸入用戶名、密碼才可以訪問MongoDB數(shù)據(jù)庫,需要的朋友可以參考下2015-01-01Navicat遠(yuǎn)程連接MongoDB最全實(shí)現(xiàn)方法以及報(bào)錯(cuò)解決
這篇文章主要給大家介紹了關(guān)于Navicat遠(yuǎn)程連接MongoDB最全實(shí)現(xiàn)方法以及報(bào)錯(cuò)解決的相關(guān)資料,文中通過圖文將實(shí)現(xiàn)的步驟一步步介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用MongoDB具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2023-03-03mongodb字段值自增長(zhǎng)實(shí)現(xiàn)代碼
這篇文章主要介紹了mongodb字段值自增長(zhǎng)實(shí)現(xiàn),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-01-01mongodb 中rs.stauts()命令參數(shù)解析
MongoDB的rs.status()命令是查看副本集狀態(tài)的重要工具,它可以展示副本集中各個(gè)成員的角色、健康狀態(tài)、同步進(jìn)度等關(guān)鍵信息,本文介紹mongodb 中rs.stauts()命令參數(shù)解析,感興趣的朋友跟隨小編一起看看吧2024-09-09MongoDB安裝使用并實(shí)現(xiàn)Python操作數(shù)據(jù)庫
Mongo最大的特點(diǎn)是他支持的查詢語言非常強(qiáng)大,其語法有點(diǎn)類似于面向?qū)ο蟮牟樵冋Z言,幾乎可以實(shí)現(xiàn)類似關(guān)系數(shù)據(jù)庫單表查詢的絕大部分功能,而且還支持對(duì)數(shù)據(jù)建立索引。本文就詳細(xì)的介紹一下如何使用,感興趣的可以了解一下2021-06-06深究從MongoDB的ObjectId中獲取時(shí)間信息
MongoDB默認(rèn)使用_id字段作為主鍵,類型為ObjectId。ObjectId的生成有一定的規(guī)則,詳情可以查看這篇文章MongoDB深究之ObjectId2017-03-03