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

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

update(args1,args2)

args1是指查询文档的条件;

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

一、文档替换

> 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 })
>

修改后的结果:

> joe1= db.post.findOne({"age":21})
{
        "_id" : 
ObjectId("54a530c3ff0df3732bac1680"),
        "id" : 1,
        "name" : 
"joe",
        "age" : 21
}
>

二、使用修改器

1.$set修改器

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

> db.post.findOne()   
{    
        "_id" : ObjectId("54a530c3ff0df3732bac167f"),    
        "id" : 0,    
        "name" : "joe",    
        "age" : 65    
}

增加comments的键:

> 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键的值:

> 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的值为数组:

> 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的值:

> 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.修改内嵌文档

> 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    
        }    
}    
>
时间: 2024-08-05 13:16:41

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

MongoDB学习笔记一:MongoDB的下载和安装

趁着这几天比较空闲,准备学习一下MongoDB数据库,今天就简单的学习了一些MongoDB的下载和安装,并创建了存储MongoDB的数据仓库.将自己今天学习到的写成博客分享给大家. 一.MongoDB的下载和安装 MongoDB的下载地址为:http://www.mongodb.org/ 1.进入官网的首页后,在首页的右上方单击Downloads连接,如图所示: 2.在页面中可以看到目前最新的版本和以前发布过的版本,这里选择最新版本,windows 32位的进行下载,文件的格式为ZIP格式的,单

MongoDB学习笔记二:创建、更新及删除文档

插入并保存文档 对目标集使用insert方法插入一个文档: > db.foo.insert({"bar" : "baz"}) 这个操作会给文档增加一个"_id"键(要是原来没有的话),然后将其保存到MongoDB中.批量插入 如果要插入多个文档,使用批量插入会快一些.批量插入传递一个由文档构成的数组给数据库.如果只是导入数据(例如,从数据feed或者MySQL中导入),可以使用命令行工具,如mongoimport,而不是使用批量插入. 删除

【MongoDB学习笔记5】MongoDB中的创建、读取、更新、删除(CRUD)

数据库会用到创建(create)读取(find)更新(update)删除(remove),MongoDB也同样会用到: 一.创建 用insert函数将文档添加到集合中.例如 创建数据库blog,将文档增加到集合post中(先将文档放入post的变量中) > post={"title":"My blog post","context":"Here's my blog post","date":new D

MongoDB学习笔记(1):MongoDB简介

1. MongoDB的特点: (1) 易于使用 MongoDB是一个面向文档的数据库,非关系型数据库.通过在文档中嵌入式文档和数据,面向对象的方法能够仅使用一条记录来表现复杂的层次关系.文档的键和值不再是固定的类型和大小. (2) 易于扩展 MongoDB的设计采用横向扩展,即通过分区将数据分散到更多机器上.面向文档的数据模型使它很容易地在多台服务器之间进行数据分割.MongoDB能够自动处理集群的数据和负载,自动重新分配文档,以及将用户请求路由到正确的机器上. (3) 丰富的功能 1) 索引

【MongoDB学习笔记31】MongoDB配置副本集

一.配置环境 1.两台安装了mongodb的CentOS服务器;(安装参考http://281816327.blog.51cto.com/907015/1598270) 2.两台服务器的ip分别为192.168.1.112.192.168.1.113: 3.两台服务器防火墙放开mongodb的默认27017的端口: 二.配置服务器 两台服务器都做如下的配置 创建/data/db文件夹 mkdir /date && mkdir /data/db 修改配置文件 vim /etc/mongodb

【MongoDB学习笔记23】MongoDB的索引对象和数组

MongoDB允许深入文档内部,对嵌套字段和数组建立索引:嵌套对象和数组字段可以和复合索引中的顶级字段一起使用,多数情况下与"正常"索引字段的行为也是一致的. 一.索引嵌套文档 例如,集合中的文档如下格式, > db.post.findOne({"username":"sid"})    {         "_id" : ObjectId("54aff7f43bd1048e7b585e39"),  

【MongoDB学习笔记20】MongoDB的索引

MongoDB的索引和关系型数据库的索引概念和功能是相同的: (1)不使用索引的搜索可以称为全表扫面,也就是说,服务器必须找完整个表才能查询整个结果: (2)建立索引后搜索,查询在索引中搜索,在索引的条目中找到条目以后,就可以直接跳转到目标文档的位置:这样的搜索比全表的搜索的速度要提高好几个数量级: 先向集合blog中添加1000000个文档: > for (i=0;i<1000000;i++){    ... db.users.insert(     ... {"i":i

【MongoDB学习笔记28】MongoDB的GridFS存储机制

GridFS作为MongoDB的存储机制,用来存放二进制大文件: GridFS有以下优点: (1)使用GridFS简化存储栈,在MongoDB中替代独立的存储工具: (2)GridFS会自动平衡已有的复制和自动分片,对文件存储做故障转移挥着横向扩展会更容易: (3)MongoDB中以2GB的大小来分配数据文件,在GridFS中文件存储集中度会比较高: GridFS当然也有缺点: (1)从GridFS中读取文件没有直接从文件系统中快: (2)修改存放在GridFS中的文档,只有先删除就文档然后从新

【MongoDB学习笔记32】MongoDB修改副本集配置

一.删除副本集成员 spock:PRIMARY> rs.config()    {             "_id" : "spock",             "version" : 1,             "members" : [                     {                             "_id" : 0,                  

【MongoDB学习笔记30】MongoDB的聚合框架

使用聚合框架可以对集合中的文档进行变换和组合.用多个构件创建一个管道(pipeline),用于对一连串的文档进行处理.这些构件包括: 筛选(filtering) 投射(projecting) 分组(grouping) 排序(sorting) 限制(limiting) 跳过(skipping) 在MongoDB中实际的集合框架,需要将这些操作传给aggregate函数,例如: (1)将文档的name字段投射出来 > db.post.aggregate({$project:{"name&quo