【MongoDB学习笔记8】深入MongoDB的更新(update)操作:修改器$set

本文涉及的产品
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
简介:

MongoDB中文档存入数据库后用update方法更新文档,update方法有两个参数,例如

update(args1,args2)

args1是指查询文档的条件;

args2是指对查询到的文档进行什么样的修改;

 

一、文档替换

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
> joe1= db.post.findOne({ "age" :20})
{
         "_id" 
ObjectId( "54a530c3ff0df3732bac1680" ),
         "id"  : 1,
         "name" 
"joe" ,
         "age"  : 20
}
> joe1.age=21
21
db.post.update({ "id" :1},joe1)
WriteResult({  "nMatched"  : 1,  "nUpserted"  : 0, 
"nModified"  : 1 })
>

修改后的结果:

1
2
3
4
5
6
7
8
9
10
> joe1= db.post.findOne({ "age" :21})
{
         "_id" 
ObjectId( "54a530c3ff0df3732bac1680" ),
         "id"  : 1,
         "name" 
"joe" ,
         "age"  : 21
}
>

 

二、使用修改器

1.$set修改器

$set用来指定一个字段的值,如果字段不存在就创建;

1
2
3
4
5
6
7
> db.post.findOne()   
{    
         "_id"  : ObjectId( "54a530c3ff0df3732bac167f" ),    
         "id"  : 0,    
         "name"  "joe" ,    
         "age"  : 65    
}

增加comments的键:   

1
2
3
4
5
6
7
8
9
10
11
12
> db.post.update({ "id" :0},    
... {$ set :{ "comments" : "i love you" }})    
WriteResult({  "nMatched"  : 1,  "nUpserted"  : 0,  "nModified"  : 1 })    
> db.post.findOne()    
{    
         "_id"  : ObjectId( "54a530c3ff0df3732bac167f" ),    
         "id"  : 0,    
         "name"  "joe" ,    
         "age"  : 65,    
         "comments"  "i love you"    
}    
>

修改comments键的值:

1
2
3
4
5
6
7
8
9
10
11
> db.post.update({ "id" :0}, {$ set :{ "comments" : "i don't love you" }})   
WriteResult({  "nMatched"  : 1,  "nUpserted"  : 0,  "nModified"  : 1 })    
> db.post.findOne()    
{    
         "_id"  : ObjectId( "54a530c3ff0df3732bac167f" ),    
         "id"  : 0,    
         "name"  "joe" ,    
         "age"  : 65,    
         "comments"  "i don't love you"    
}    
>

   
修改comments的值为数组:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
> db.post.update({ "id" :0}, {$ set :{ "comments" :[ "i love you" , "or" , "i don't love you" ]}})   
WriteResult({  "nMatched"  : 1,  "nUpserted"  : 0,  "nModified"  : 1 })    
> db.post.findOne({ "id" :0})    
{    
         "_id"  : ObjectId( "54a530c3ff0df3732bac167f" ),    
         "id"  : 0,    
         "name"  "joe" ,    
         "age"  : 65,    
         "comments"  : [    
                 "i love you" ,    
                 "or" ,    
                 "i don't love you"    
         ]    
}    
>

   
删除comments的值:

1
2
3
4
5
6
7
8
9
10
> db.post.update({ "id" :0}, {$ unset :{ "comments" :1}})   
WriteResult({  "nMatched"  : 1,  "nUpserted"  : 0,  "nModified"  : 1 })    
> db.post.findOne({ "id" :0})    
{    
         "_id"  : ObjectId( "54a530c3ff0df3732bac167f" ),    
         "id"  : 0,    
         "name"  "joe" ,    
         "age"  : 65    
}    
>

   

2.修改内嵌文档    

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
> db.post.findOne({ "id" :0})    
{    
         "_id"  : ObjectId( "54a530c3ff0df3732bac167f" ),    
         "id"  : 0,    
         "name"  "joe" ,    
         "age"  : 65,    
         "comments"  : {    
                 "1"  : 1,    
                 "2"  : 2,    
                 "3"  : 3    
         }    
}    
> db.post.update({ "id" :0}, {$ set :{ "comments.1" :4}})    
WriteResult({  "nMatched"  : 1,  "nUpserted"  : 0,  "nModified"  : 1 })    
> db.post.findOne({ "id" :0})    
{    
         "_id"  : ObjectId( "54a530c3ff0df3732bac167f" ),    
         "id"  : 0,    
         "name"  "joe" ,    
         "age"  : 65,    
         "comments"  : {    
                 "1"  : 4,    
                 "2"  : 2,    
                 "3"  : 3    
         }    
}    
>




本文转自 bannerpei 51CTO博客,原文链接:http://blog.51cto.com/281816327/1598398,如需转载请自行联系原作者
相关实践学习
MongoDB数据库入门
MongoDB数据库入门实验。
快速掌握 MongoDB 数据库
本课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。 通过学习此课程,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。   相关的阿里云产品:云数据库 MongoDB版 云数据库MongoDB版支持ReplicaSet和Sharding两种部署架构,具备安全审计,时间点备份等多项企业能力。在互联网、物联网、游戏、金融等领域被广泛采用。 云数据库MongoDB版(ApsaraDB for MongoDB)完全兼容MongoDB协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份回滚、性能优化等解决方案。 产品详情: https://www.aliyun.com/product/mongodb
相关文章
|
5月前
|
存储 JSON NoSQL
redis基本数据结构(String,Hash,Set,List,SortedSet)【学习笔记】
这篇文章是关于Redis基本数据结构的学习笔记,包括了String、Hash、Set、List和SortedSet的介绍和常用命令。文章解释了每种数据结构的特点和使用场景,并通过命令示例演示了如何在Redis中操作这些数据结构。此外,还提供了一些练习示例,帮助读者更好地理解和应用这些数据结构。
redis基本数据结构(String,Hash,Set,List,SortedSet)【学习笔记】
|
7月前
|
DataWorks NoSQL fastjson
DataWorks操作报错合集之DataX进行MongoDB全量迁移的过程中,DataX的MongoDB Reader插件在初始化阶段找不到Fastjson 2.x版本的类库,该怎么办
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
|
8月前
|
存储 NoSQL Linux
【MongoDB】下载安装、指令操作
【MongoDB】下载安装、指令操作
225 1
|
8月前
|
分布式计算 DataWorks NoSQL
DataWorks操作报错合集之从MongoDB同步数据到MaxCompute(ODPS)时,出现报错,该怎么解决
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
DataWorks操作报错合集之从MongoDB同步数据到MaxCompute(ODPS)时,出现报错,该怎么解决
|
8月前
|
存储 C++ 容器
【C++】学习笔记——map和set
【C++】学习笔记——map和set
47 0
|
8月前
|
NoSQL Shell MongoDB
python操作MongoDB部分
python操作MongoDB部分
52 0
|
8月前
|
NoSQL BI MongoDB
MongoDB 数据探索之道:查询文档操作详解
MongoDB 数据探索之道:查询文档操作详解
|
8月前
|
NoSQL 安全 MongoDB
MongoDB 数据精简指南:删除文档操作详解
MongoDB 数据精简指南:删除文档操作详解
109 0
|
2月前
|
存储 JSON NoSQL
学习 MongoDB:打开强大的数据库技术大门
MongoDB 是一个基于分布式文件存储的文档数据库,由 C++ 编写,旨在为 Web 应用提供可扩展的高性能数据存储解决方案。它与 MySQL 类似,但使用文档结构而非表结构。核心概念包括:数据库(Database)、集合(Collection)、文档(Document)和字段(Field)。MongoDB 使用 BSON 格式存储数据,支持多种数据类型,如字符串、整数、数组等,并通过二进制编码实现高效存储和传输。BSON 文档结构类似 JSON,但更紧凑,适合网络传输。
81 15
|
2月前
|
存储 NoSQL 关系型数据库
阿里云数据库MongoDB版助力信也科技 打造互联网金融企业样板
我们的风控系统引入阿里云数据库MongoDB版后,解决了特征类字段灵活加减的问题,大大提高了开发效率,极大的提升了业务用户体验,获得了非常好的效果
阿里云数据库MongoDB版助力信也科技 打造互联网金融企业样板