热门标签 | HotTags
当前位置:  开发笔记 > 数据库 > 正文

mongodb高级操作(1)-update

前面我们已经介绍了mongodb的基本操作:mongodb基本操作下面是介绍一些高级的增删改查操作.1.更新文档文档替换最简单的方法就是文档完全替换,如下就是一个完全替换的例子,先把需要更新的文档找出来并且赋,然后修改所赋的,最后再进行update:a1db.test

前面我们已经介绍了mongodb的基本操作:mongodb基本操作下面是介绍一些高级的增删改查操作. 1.更新文档 文档替换 最简单的方法就是文档完全替换,如下就是一个完全替换的例子,先把需要更新的文档找出来并且赋,然后修改所赋的,最后再进行update: a1 = db . test

前面我们已经介绍了mongodb的基本操作:mongodb基本操作 下面是介绍一些高级的增删改查操作.

1.更新文档

文档替换

最简单的方法就是文档完全替换,如下就是一个完全替换的例子,先把需要更新的文档找出来并且赋值,然后修改所赋的值,最后再进行update:
> a1=db.test.findOne(){ "_id" : ObjectId("5738785d132e1e47e535a177"), "x" : 3.14, "y" : 5.5 }> a1{ "_id" : ObjectId("5738785d132e1e47e535a177"), "x" : 3.14, "y" : 5.5 }> delete a1.xtrue> a1{ "_id" : ObjectId("5738785d132e1e47e535a177"), "y" : 5.5 }> a1.content={name:'job',age:11}{ "name" : "job", "age" : 11 }> a1{	"_id" : ObjectId("5738785d132e1e47e535a177"),	"y" : 5.5,	"content" : {		"name" : "job",		"age" : 11	}}> db.test.update({"_id" : ObjectId("5738785d132e1e47e535a177")},a1)WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

使用修改器

通常文档只会有一部分需要更新,可以使用原子性的更新修改器对指定文档中的某些键进行更新

"$set"修改器

"$set"修改器用来指定一个字段的值,如果这个字段不存在则创建它,例如先给test表添加一个phone属性:
> db.test.find(){ "_id" : ObjectId("573957c55f74882a9bfa2d9e"), "name" : "brent", "age" : 30, "email" : "xxxx@qq.com" }> > db.test.update({"_id" : ObjectId("573957c55f74882a9bfa2d9e")},{"$set":{phone:666}})WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })>> db.test.find(){ "_id" : ObjectId("573957c55f74882a9bfa2d9e"), "name" : "brent", "age" : 30, "email" : "xxxx@qq.com", "phone" : 666 }
然后用修改器再将phone该为888
> db.test.update({"_id" : ObjectId("573957c55f74882a9bfa2d9e")},{"$set":{phone:888}})WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })> db.test.find(){ "_id" : ObjectId("573957c55f74882a9bfa2d9e"), "name" : "brent", "age" : 30, "email" : "xxxx@qq.com", "phone" : 888 }
使用"$set"修改器还可以修改字段的属性,例如可以把phone改成一个数组,还可以用"$unset"将键完全删除:
 > db.test.update({"_id" : ObjectId("573957c55f74882a9bfa2d9e")},{"$unset":{phone:888}})WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })> db.test.find(){ "_id" : ObjectId("573957c55f74882a9bfa2d9e"), "name" : "brent", "age" : 30, "email" : "xxxx@qq.com" }
使用"$set"修改内嵌文档:
> db.test.find(){ "_id" : ObjectId("573957c55f74882a9bfa2d9e"), "name" : "brent", "age" : 30, "email" : "xxxx@qq.com" }{ "_id" : ObjectId("57395fa85f74882a9bfa2d9f"), "id" : { "phone" : 888, "address" : "abc" } }>> db.test.update({"_id" : ObjectId("57395fa85f74882a9bfa2d9f")},{"$set":{"id.phone":666}})WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })>> db.test.find(){ "_id" : ObjectId("573957c55f74882a9bfa2d9e"), "name" : "brent", "age" : 30, "email" : "xxxx@qq.com" }{ "_id" : ObjectId("57395fa85f74882a9bfa2d9f"), "id" : { "phone" : 666, "address" : "abc" } }

"$inc"增加和减少

"$inc"修改器用来增加和减少已有键的值,只能用于整形,长整形或者双精度浮点型的值,用在其它类型的值上面会报错.对于不存在的键,像"$set"那样也会自动创建相应的键,并且值为给定的值 例如我们用"$inc"修改器给age值+1,原来是30,现在变成了31
> db.test.find(){ "_id" : ObjectId("573957c55f74882a9bfa2d9e"), "name" : "brent", "age" : 30, "email" : "xxxx@qq.com" }{ "_id" : ObjectId("57395fa85f74882a9bfa2d9f"), "id" : { "phone" : 666, "address" : "abc" } }> db.test.update({"_id" : ObjectId("573957c55f74882a9bfa2d9e")},{"$inc":{age:1}})WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })> db.test.find(){ "_id" : ObjectId("573957c55f74882a9bfa2d9e"), "name" : "brent", "age" : 31, "email" : "xxxx@qq.com" }{ "_id" : ObjectId("57395fa85f74882a9bfa2d9f"), "id" : { "phone" : 666, "address" : "abc" } }
如果要减少,则将age:1里的1改成-1

"$push"数组修改器-添加元素

如果数组已经存在,那么"$push"会向已有的数组末尾添加一个元素,如果没有就创建一个新的数组 ,下面这个例子会创建一个表示comments的数组:

            var cpro_id = "u6885494";

        
        
    
推荐阅读
  • Mongoose 5.12.10 发布:MongoDB 异步对象模型工具的新特性与修复
    Mongoose 是一款专为异步环境设计的 MongoDB 对象模型工具,支持 Promise 和回调函数。最新版本 Mongoose 5.12.10 带来了多项修复和改进,包括查询选项中的默认值设置、嵌入式判别器填充、以及 TypeScript 定义文件的优化。 ... [详细]
  • 本文探讨了2019年前端技术的发展趋势,包括工具化、配置化和泛前端化等方面,并提供了详细的学习路线和职业规划建议。 ... [详细]
  • 多键索引(MultiKey Indexes)是在包含数组类型字段上创建的特殊索引,旨在优化对数组元素的查询性能。本文将通过实例介绍如何在MongoDB中创建和使用多键索引。 ... [详细]
  • ODBC介绍:开放式数据库连接详解
    本文详细介绍了ODBC(开放式数据库连接),这是一种允许应用程序访问多种数据库系统的标准API。自1992年由微软与Simba合作推出以来,ODBC已成为跨平台数据访问的重要标准。 ... [详细]
  • 利用GitHub热门资源,成功斩获阿里、京东、腾讯三巨头Offer
    Spring框架作为Java生态系统中的重要组成部分,因其强大的功能和灵活的扩展性,被广泛应用于各种规模的企业级应用开发中。本文将通过一份在GitHub上获得极高评价的Spring全家桶文档,探讨如何掌握Spring框架及其相关技术,助力职业发展。 ... [详细]
  • 本文探讨了在 Spring Boot 应用程序中使用 MongoDB 进行复杂文档查询的方法,特别是如何通过实体类映射来处理包含嵌套对象和列表的数据结构。 ... [详细]
  • 近期参与了一个旨在提高在线平台大规模查询响应速度的项目,预计处理的数据量为2-3亿条,数据库并发量约为每秒1500次,未来可能增至3000次。通过对比Redis和MongoDB,最终选择了MongoDB,因其具备优秀的横向扩展性和GridFS支持下的Map/Reduce功能。 ... [详细]
  • ArchSummit深圳2014将于7月18日拉开帷幕,所有讲师已确认,涵盖9个热门话题,共36场精彩报告。InfoQ中文站提供了详细的讲师和报告列表。 ... [详细]
  • 本文详细介绍了如何构建MongoDB的ReplSet复制集群,包括环境准备、配置文件设置以及初始化复制集群的具体步骤。 ... [详细]
  • 本文介绍了使用Node.js开发超市管理系统的经验分享,重点讨论了项目中使用的技术栈及其实现细节,包括前端Bootstrap和后端Express框架的应用,以及MongoDB数据库的操作。 ... [详细]
  • 本文档详细介绍了如何在MongoDB命令行中执行基本操作,包括数据库的选择与创建、文档的插入与查询、文档的更新与删除等。同时,还涵盖了条件查询、统计、模糊查询等高级功能。 ... [详细]
  • Lepus: 高效的企业级数据库监控解决方案
    访问官方网站:http://www.lepus.cc/。Lepus(天兔)数据库监控系统是由一位资深数据库管理员(现任职于一家知名互联网公司)专为互联网企业设计的专业数据库监控平台。该系统旨在提供全面的数据库性能监控与管理服务,支持多种主流数据库类型。 ... [详细]
  • 开发笔记:Mongodb副本集集群搭建 ... [详细]
  • 使用 Docker 部署 MongoDB 并通过 IntelliJ IDEA 远程访问
    本文详细介绍了如何使用 Docker 部署 MongoDB,并通过 IntelliJ IDEA 实现远程连接的方法。包括 MongoDB 的基本配置、用户管理以及如何在 IDE 中配置连接。 ... [详细]
  • 本文深入探讨了分布式文件系统的核心概念及其在现代数据存储解决方案中的应用,特别是针对大规模数据处理的需求。文章不仅介绍了多种流行的分布式文件系统和NoSQL数据库,还提供了选择合适系统的指导原则。 ... [详细]
author-avatar
小冰的大夢想
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有