为什么要使用修改器? 

   通常我们只会修改文档的一部分,这时候更新整个文档就显得很麻烦,通常是通过原子性的更新修改器来完成。

1."$set"修改器

   "$set"用来指定某个字段,如果不存在,则创建。这对部分更新或者添加来说就非常方便了。

如:

 step1:往users数据库长如一条数据,通过JavaScript来完成:

   var logs={name:"joe",age:30,sex:"female",location:"Wisconsin"}

   logs

 运行:

 /* 1 */
{
"name" : "joe",
"age" : 30.0,
"sex" : "female",
"location" : "Wisconsin"
}

step2:放入users数据库

  db.users.insert(logs)

查询结果:

  db.users.find()

/* 1 */
{
"_id" : ObjectId("575a2acfbc9fb3f12145a004"),
"name" : "joe",
"age" : 30.0,
"sex" : "female",
"location" : "Wisconsin"
}

step3:加入要插入一条喜欢的书籍:

db.users.update({name:"joe"},{"$set":{"favorite book":"War and Peace"}})

然后查询db.users.find()

/* 1 */
{
"_id" : ObjectId("575a2acfbc9fb3f12145a004"),
"name" : "joe",
"age" : 30.0,
"sex" : "female",
"location" : "Wisconsin",
"favorite book" : "War and Peace"
}

从结果总可以看出,数据中添加了一条favorite book字段,达到了我们想要的结果^_^;

step4:如果joe喜欢另一本书,继续来看"$set"如何大发神威;

/* 1 */
{
"_id" : ObjectId("575a2acfbc9fb3f12145a004"),
"name" : "joe",
"age" : 30.0,
"sex" : "female",
"location" : "Wisconsin",
"favorite book" : "forrest gump"
}

"$Set"还可以修改键的类型,比如喜欢的是好多书,就可以放在数组中。

如下:

 db.users.update({name:"joe"},{"$set":{"favorite book":["cat's Cradle","Foundation Trilogy","Ender's Game"]}})

/* 1 */
{
"_id" : ObjectId("575a2acfbc9fb3f12145a004"),
"name" : "joe",
"age" : 30.0,
"sex" : "female",
"location" : "Wisconsin",
"favorite book" : [
"cat's Cradle",
"Foundation Trilogy",
"Ender's Game"
]
}

还可以通过"$unset"来操作删除某个字段

db.users.update({name:"joe"},{"$unset":{"favorite book":1}})

/* 1 */
{
"_id" : ObjectId("575a2acfbc9fb3f12145a004"),
"name" : "joe",
"age" : 30.0,
"sex" : "female",
"location" : "Wisconsin"
}

这样就和最开始一样了。

"$set"还可以修改内嵌的文档

如:

var log={title:"A Blog Post",content:"...",author:{name:"joe",email:"joe@qq.com"}}
log
db.blog.posts.insert(log)
db.blog.posts.findOne()

/* 1 */
{
"_id" : ObjectId("575a313fbc9fb3f12145a008"),
"title" : "A Blog Post",
"content" : "...",
"author" : {
"name" : "joe",
"email" : "joe@qq.com"
}
}

db.blog.posts.update({"author.name":"joe"},{"$set":{"author.name":"joe Mather"}})

/* 1 */
{
"_id" : ObjectId("575a313fbc9fb3f12145a008"),
"title" : "A Blog Post",
"content" : "...",
"author" : {
"name" : "joe Mather",
"email" : "joe@qq.com"
}
}

总结:$开头的修改器都是通过主键key来修改对应的内容。

MongoDB修改器的使用1的更多相关文章

  1. mongodb修改器

    mongodb修改器 转载自:http://blog.csdn.net/mcpang/article/details/7752736 mongodb修改器(\(inc/\)set/\(unset/\) ...

  2. mongodb修改器(转)

    MongoDB 修改器 对文档中的某些字段进行更新 $inc 专门用来增加(或减少)数字的,只能用于整数,长整数或双精度浮点型的值$inc键的值必须为数字,不能使用字符串,数组或其他非数字的值如果键不 ...

  3. Mongodb更新数组$pull修饰符 (mongodb 修改器($inc/$set/$unset/$push/$pop/upsert))

    mongodb 修改器($inc/$set/$unset/$push/$pop/upsert))   https://www.jb51.net/article/112588.htm http://bl ...

  4. MongoDB修改器总结

    1"$set":用来制定一个字段值,若不存在,则创建:    一般用于点加一个字段   db.users.update({name:"joe"},{" ...

  5. mongoDB 修改器()

    -----------------------------------2016-5-26 15:56:57-- source:[1],MongoDB更新操作符

  6. MongoDB修改器的使用2

    1."$inc"的使用 主要用来增加数值,比如网站的访问量,点击量,流量等 db.games.insert({game:"pinball",user:" ...

  7. mongodb的修改器

    在mongodb中通常文档只会有一部分要更新,利用原子的更新修改器,可以做到只更新文档的一部分键值,而且更新极为高效,更新修改器是种特殊的键,用来指定复杂的更新操作,比如调整.增加.或者删除键,还可以 ...

  8. [转载]MongoDB的$inc修改器

    MongoDB的$inc修改器相当于编程语言中的 “+=”“$inc”只能用于操作数值类型的数据,包括整数.长整数和双精度浮点数,用于其他类型的数据会导致操作失败. >db.users.find ...

  9. MongoDB之修改器

    MongoDB之修改器 $set  简单粗暴  {name: valuel} 直接将key对应的值赋值给value. db.xxoo.insert({}, {set: {key: value}}) / ...

随机推荐

  1. IE11浏览器:请不要再叫我IE,谢谢

    这篇对自已挺有用的,特mark一下,纯转载. 转载自:nczonline 微软在上周刚刚发布了用于Windows 8.1上 的首个Internet Explorer 11的预览版.我们已经确认Inte ...

  2. <Data Structure and Algorithm>排序算法

    排序稳定:如果两个数相同,对他们进行的排序结果为他们的相对顺序不变.例如A={1,2,1,2,1}这里排序之后是A = {1,1,1,2,2} 稳定就是排序后第一个1就是排序前的第一个1,第二个1就是 ...

  3. 十分钟能学会的框架,MVC+20个常用函数

    LazyPHP(以下简称LP)是一个轻框架. 之所以开发这么一个框架,是因为其他框架给的太多.在高压力的情况下,ORM和盘根错节的对象树反而将简单的页面请求处理复杂化,在调试和性能上带来反面效果. L ...

  4. PROC SORT

    PROC SORT DATA=输入数据集 <OUT=输出数据集><选项>; BY 关键变量; RUN; PROC SORT 语法如上,其中在尖括号中的可以不出现,也不会报错. ...

  5. ssh端口转发

    http://blog.sina.com.cn/s/blog_47094def0101fvge.html

  6. nginx日志格式来分析网站访问速度与瓶颈

    参考地址:http://www.ttlsa.com/nginx/nginx-modules-ngx_http_log_request_speed/ 查看nginx 安装模块和配置 /usr/local ...

  7. 【IOS】异步调用--- 简单使用记录

    /×× ×实现功能:店铺被删除后,先显示提示toast.然后,页面休眠5秒后,再返回到店铺列表页面.×/ - (void)processDeleteShopError { _isLoadingData ...

  8. SQLServer 随机生成指定范围的日期

    一个分页的问题,DTCms3.0中,分页是根据时间分页的,如果当添加时间(add_time)都是同一个数值时,不管点击第几页,显示的数据都是同一个的内容,于是就有了需要把同一个时间改指定随机日期的功能 ...

  9. [异常解决] vmware tools 虚拟机 --> 更新/导入wmwera tools菜单变灰,无法导入问题解决

    在虚拟中的装Ubuntu只要下载一个Ubuntu镜像,按照新建的指示一步一步安装 ,但是安装好之后想从原来系统中复制点东西到虚拟机中的Ubuntu中却有点麻烦.幸好Vmware自带了一个VMware ...

  10. 如何选择前端框架:ANGULAR VS EMBER VS REACT

    最近一段时间是令前端工程师们非常兴奋的时期,因为三大Web框架陆续发布新版本,让我们见识到了更强大的Web框架.Ember2.0在2个月之前已经发布,从1.0升级到2.0非常简单.几周之前React发 ...