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

本文出自 “缘随心愿” 博客,请务必保留此出处http://281816327.blog.51cto.com/907015/1598398

更多相关文章
  • ongoDB中文档存入数据库后用update方法更新文档,update方法有两个参数,例如 update(args1,args2) args1是指查询文档的条件: args2是指对查询到的文档进行什么样的修改: $inc用来增加已用的键值,如果键不存在就创建: $Inc只能修改的键值必须为整数.长整 ...
  • 简单单个文档插入用insert方法: > db.post.insert({"bar":"baz"}); WriteResult({ "nInserted" : 1 }) 批量插入,用insert方法(参数要是一个文档数组): > ...
  • 


    		    MongoDB学习笔记系列:(二) Shell基本操作和BSON数据类型
    1.创建一个数据库 use [databaseName] 注意:如果对这个数据库什么也不操作,这个空数据库就会自动被删除. 2.查看所有数据库 show dbs 3.给指定数据库添加集合并且添加记录 db.[documentName].insert({数据}) 4.查看数据库中的数据 show co ...
  • 


    		    MongoDB学习日志Java对MongoDB的CRUD操作
    说起Java操作数据库自然会想到Sun的知名品牌JDBC,对于MongoDB这样的NoSQL数据库,暂时没有像JDBC这样的标准. 这篇文章中对目前的形势做了分析和憧憬http://www.csdn.net/article/2012-06-21/2806842 回到正题记录下熟悉MongoDB为Ja ...
  • MongoDB的索引和关系型数据库的索引概念和功能是相同的: (1)不使用索引的搜索可以称为全表扫面,也就是说,服务器必须找完整个表才能查询整个结果: (2)建立索引后搜索,查询在索引中搜索,在索引的条目中找到条目以后,就可以直接跳转到目标文档的位置:这样的搜索比全表的搜索的速度要提高好几个数量级: ...
  • MongoDB中find查询使用Perl兼容的正则表达式 perl中正则表达式简述:http://www.chinaunix.net/old_jh/25/159388.html 示例: > db.post.find() { "_id" : ObjectId("54 ...
  • 


    		    MongoDB学习笔记11MongoDB的WEB界面
    一.开启Web界面 MongoDB自带一个微型的web管理信息界面,需要修改/etc/mongod.conf中的一个配置项: # Enable the HTTP interface (Defaults to port 28017). httpinterface=true 关闭Mongod服务,手动用 ...
  • GridFS的原理是将大文件分割为多个比较大的块,将每个块作为独立的文档进行存储. (1)GridFS中的块会被存贮到专用的集合中,默认为fs.chunks; (2)除了将文件的每一个块单独存储外,还需要将每个文件块的元信息放入一个文档存储,并将这些文档默认集中在fs.files集合中: 例如将fo ...
一周排行