为什么要使用修改器? 

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

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. [LeetCode]413 Arithmetic Slices

    A sequence of number is called arithmetic if it consists of at least three elements and if the diffe ...

  2. 测试文档锁:doc.LockDocument()

    /// <summary> /// 总结:用到DocumentManager.Open(filePath)时,如果是ForWrite,就需要用到lock文档锁. /// </summ ...

  3. zmq中zmq_poll()函数介绍

    功能: 查看指定的多个socket上哪些socket发生了指定的事件, 事件有: ZMQ_POLLIN: 有消息到来 ZMQ_POLLOUT: 当前无阻塞可以发送消息 ZMQ_POLLERR: 只对标 ...

  4. 看到shape文件可以加载到GOOGLE EARTH上的方法,有空可以试试

    引用 Shape文件转为KMZ并在Google Earth中显示 (1)在ArcGIS中加载一个Shape文件,笔者加载的是某个地区的道路(双线道路)图层 (2)在ArcToolbox中,依次展开Co ...

  5. 8.4.3 Glide

    1). 导入库 dependencies { compile 'com.github.bumptech.glide:glide:3.5.2' compile 'com.android.support: ...

  6. MyEclipse10优化

    Myeclipse10 优化设置 一.myeclipse字体设置 Window->Preferences->General->Appearance->Colors and Fo ...

  7. React 随笔二

    这周做的demo3和demo4.5 随记的小点. 1.js错误提示: Warning: Each child in an array or iterator should have a unique  ...

  8. 解剖SQLSERVER 第九篇 OrcaMDF现在能通过系统DMVs显示元数据(译)

    解剖SQLSERVER 第九篇  OrcaMDF现在能通过系统DMVs显示元数据(译) http://improve.dk/orcamdf-now-exposes-metadata-through-s ...

  9. 岁末年初3Q大战惊现高潮,360震撼推出Android "3Q" IM即时通讯

    岁末年初3Q大战惊现高潮,360震撼推出Android "3Q" IM即时通讯 看过了QQ和360斗争的开端高潮,当然现在还不能说这场斗争已经结束,在我看来这次的事件未尝不是一个适 ...

  10. .Net Core开源通讯组件 SmartRoute(服务即集群)

    SmartRoute是基于Dotnet Core设计的可运行在linux和windows下的服务通讯组件,其设计理念是去中心化和零配置即可实现服务通讯集群.SmartRoute是通过消息订阅的机制实现 ...