• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    MongoDB如何更新多级文档的数据

    嵌套数组更新

    以下面的数据(数据集名称为author)为例:

    {name: '岛上码农', documents: ['Flutter入门与实战', '高性能MySQL', 'MongoDB专业指北']}
    

    我们需要将 MongoDB专业指北改成MongoDB不专业指北,就属于修改嵌套的文档数据了。这个时候需要使用到 MongoDB 提供的定位操作符$。定位操作符即表示将对应条件匹配到的数据,如:

    db.author.update(
      {name: '岛上码农', documents: 'MongoDB专业指北'}, 
      {'$set': {'documents.$': 'MongoDB不专业指北'}}
    );
    

    对于下级节点为数组的也是一样。

    {
      name: '岛上码农', 
      documents: [
        {name: 'Flutter入门与实战', score: 80}, 
        {name: '高性能MySQL', score: 90}, 
        {name: 'MongoDB专业指北', score: 85}
      ]
    }
    

    需要将 documengs 节点的 name 和 score 进行修改。

    db.author.update(
      {name: '岛上码农', 'documents.name': 'MongoDB专业指北'},
      {'$set': {
        	'documents.$.name': 'MongoDB不专业指北', 
        	'documents.$.score':88}
      }
    );
    

    $定位操作符即在查询条件中找到的数组中的数据元素位置,即表示操作的是该位置的数据。

    更新下级文档的属性

    更新下级文档属性时可以直接使用属性访问符“.”,例如下面需要更新 praise 增加到291。

    {
      name: '岛上码农', 
      scores: {
        view:  18800, 
        praise: 290, 
        followers: 105
    	}
    }
    
    db.author.update(
      {name: '岛上码农'}, 
      {'$set': {'scores.praise': 291}}
    );
    

    下级文档若还存在嵌套数组也是类似的操作,如下面的数据,需要将“公众号”换成“微信公众号”:

    {
      name: '岛上码农', 
      scores: {
        view:  18800, 
        praise: 290, 
        followers: 105,
        platform: ['掘金', '公众号']
    	}
    }
    
    db.author.update(
      {'name': '岛上码农', 'scores.platform': '公众号'},
      {'$set': {'scores.platform.$':'微信公众号'}}
    );
    

    属性增加和移除

    MongoDB提供了 $push 和 $pull操作指令来增加或移除属性,同时还提供了 $pop 来移除数组的第一个或最后一个值。我们给前一个文档增加一个 homepage 属性。

    db.author.update(
      {name: '岛上码农'}, 
      {$push: {homepage: 'https://juejin.cn/user/70787819648695'}}
    );
    

    注意的是,此时插入的是一个名为 homepage 的数组,其中的一个元素是:juejin.cn/user/707878…。如果是增加不是数组的属性,使用$set 指令即可。 可以使用 pull 移除掉匹配的一个属性。

    db.author.update(
      {name: '岛上码农'}, 
      {$pull: {homepage: 'https://juejin.cn/user/70787819648695'}}
    );
    

    $pop 操作时使用数字-1和1表示移除首尾的元素,对于下面的数据,移除数组platform里的数据。

    {
      name: '岛上码农',
    	scores : {
    		view: 18800,
    		praise: 290,
    		followers: 105,
    		platform: ['掘金', '公众号', '其他1', '其他2']
    	}
    }
    
    // 移除第一个元素
    db.author.update({name: '岛上码农'}, {$pop: {'scores.platform': -1}});
    // 移除最后一个元素
    db.author.update({name: '岛上码农'}, {$pop: {'scores.platform': 1}});
    

    总结

    本篇介绍了 MongoDB 的嵌套属性更新操作,主要是定位操作符$的使用。通过定位符可以定位我们需要修改的数据位置,进而进行更新操作。以及属性的添加和移除,通过$push、$pull和$pop指令即可完成响应的操作。

    以上就是MongoDB如何更新多级文档的数据的详细内容,更多关于MongoDB 更新多级文档的资料请关注脚本之家其它相关文章!

    您可能感兴趣的文章:
    • 分布式文档存储数据库之MongoDB访问控制的操作方法
    • 分布式文档存储数据库之MongoDB备份与恢复的实践详解
    • 分布式文档存储数据库之MongoDB分片集群的问题
    • SpringDataMongoDB多文档事务的实现
    • mongodb如何对文档内数组进行过滤的方法步骤
    • MongoDB中文档的更新操作示例详解
    • MongoDB数据库文档操作方法(必看篇)
    • mongodb 数据类型(null/字符串/数字/日期/内嵌文档/数组等)
    • PHP库 查询Mongodb中的文档ID的方法
    上一篇:MongoDB orm框架的注意事项及简单使用
    下一篇:分析MongoDB和MySQL各自的关键特性、差别和优势
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    MongoDB如何更新多级文档的数据 MongoDB,如何,更新,多级,文档,