• 售前

  • 售后

热门帖子
入门百科

MongoDB怎样更新多级文档的数据

[复制链接]
123456835 显示全部楼层 发表于 2021-8-14 14:50:12 |阅读模式 打印 上一主题 下一主题
目次


  • 嵌套数组更新
  • 更新下级文档的属性
  • 属性增长和移除
  • 总结

嵌套数组更新


以下面的数据(数据集名称为author)为例:
  1. {name: '岛上码农', documents: ['Flutter入门与实战', '高性能MySQL', 'MongoDB专业指北']}
复制代码
我们必要将 MongoDB专业指北改成MongoDB不专业指北,就属于修改嵌套的文档数据了。这个时候必要使用到 MongoDB 提供的定位操作符$。定位操作符即表示将对应条件匹配到的数据,如:
  1. db.author.update(
  2.   {name: '岛上码农', documents: 'MongoDB专业指北'},
  3.   {'$set': {'documents.$': 'MongoDB不专业指北'}}
  4. );
复制代码
对于下级节点为数组的也是一样。
  1. {
  2.   name: '岛上码农',
  3.   documents: [
  4.     {name: 'Flutter入门与实战', score: 80},
  5.     {name: '高性能MySQL', score: 90},
  6.     {name: 'MongoDB专业指北', score: 85}
  7.   ]
  8. }
复制代码
必要将 documengs 节点的 name 和 score 进行修改。
  1. db.author.update(
  2.   {name: '岛上码农', 'documents.name': 'MongoDB专业指北'},
  3.   {'$set': {
  4.             'documents.$.name': 'MongoDB不专业指北',
  5.             'documents.$.score':88}
  6.   }
  7. );
复制代码
$定位操作符即在查询条件中找到的数组中的数据元素位置,即表示操作的是该位置的数据。

更新下级文档的属性


更新下级文档属性时可以直接使用属性访问符“.”,比方下面必要更新 praise 增长到291。
  1. {
  2.   name: '岛上码农',
  3.   scores: {
  4.     view:  18800,
  5.     praise: 290,
  6.     followers: 105
  7.         }
  8. }
复制代码
  1. db.author.update(
  2.   {name: '岛上码农'},
  3.   {'$set': {'scores.praise': 291}}
  4. );
复制代码
下级文档若还存在嵌套数组也是雷同的操作,如下面的数据,必要将“公众号”换成“微信公众号”:
  1. {
  2.   name: '岛上码农',
  3.   scores: {
  4.     view:  18800,
  5.     praise: 290,
  6.     followers: 105,
  7.     platform: ['掘金', '公众号']
  8.         }
  9. }
复制代码
  1. db.author.update(
  2.   {'name': '岛上码农', 'scores.platform': '公众号'},
  3.   {'$set': {'scores.platform.$':'微信公众号'}}
  4. );
复制代码
属性增长和移除


MongoDB提供了 $push 和 $pull操作指令来增长或移除属性,同时还提供了 $pop 来移除数组的第一个或最后一个值。我们给前一个文档增长一个 homepage 属性。
  1. db.author.update(
  2.   {name: '岛上码农'},
  3.   {$push: {homepage: 'https://juejin.cn/user/70787819648695'}}
  4. );
复制代码
留意的是,此时插入的是一个名为 homepage 的数组,此中的一个元素是:juejin.cn/user/707878…。如果是增长不是数组的属性,使用$set 指令即可。 可以使用 pull 移除掉匹配的一个属性。
  1. db.author.update(
  2.   {name: '岛上码农'},
  3.   {$pull: {homepage: 'https://juejin.cn/user/70787819648695'}}
  4. );
复制代码
$pop 操作时使用数字-1和1表示移除首尾的元素,对于下面的数据,移除数组platform里的数据。
  1. {
  2.   name: '岛上码农',
  3.         scores : {
  4.                 view: 18800,
  5.                 praise: 290,
  6.                 followers: 105,
  7.                 platform: ['掘金', '公众号', '其他1', '其他2']
  8.         }
  9. }
复制代码
  1. // 移除第一个元素
  2. db.author.update({name: '岛上码农'}, {$pop: {'scores.platform': -1}});
  3. // 移除最后一个元素
  4. db.author.update({name: '岛上码农'}, {$pop: {'scores.platform': 1}});
复制代码
总结


本篇先容了 MongoDB 的嵌套属性更新操作,告急是定位操作符$的使用。通过定位符可以定位我们必要修改的数据位置,进而进行更新操作。以及属性的添加和移除,通过$push、$pull和$pop指令即可完成相应的操作。
以上就是MongoDB如何更新多级文档的数据的具体内容,更多关于MongoDB 更新多级文档的资料请关注脚本之家别的干系文章!

帖子地址: 

回复

使用道具 举报

分享
推广
火星云矿 | 预约S19Pro,享500抵1000!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

草根技术分享(草根吧)是全球知名中文IT技术交流平台,创建于2021年,包含原创博客、精品问答、职业培训、技术社区、资源下载等产品服务,提供原创、优质、完整内容的专业IT技术开发社区。
  • 官方手机版

  • 微信公众号

  • 商务合作