MongoDB修改器的使用1
为什么要使用修改器?
通常我们只会修改文档的一部分,这时候更新整个文档就显得很麻烦,通常是通过原子性的更新修改器来完成。
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的更多相关文章
- mongodb修改器
mongodb修改器 转载自:http://blog.csdn.net/mcpang/article/details/7752736 mongodb修改器(\(inc/\)set/\(unset/\) ...
- mongodb修改器(转)
MongoDB 修改器 对文档中的某些字段进行更新 $inc 专门用来增加(或减少)数字的,只能用于整数,长整数或双精度浮点型的值$inc键的值必须为数字,不能使用字符串,数组或其他非数字的值如果键不 ...
- 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 ...
- MongoDB修改器总结
1"$set":用来制定一个字段值,若不存在,则创建: 一般用于点加一个字段 db.users.update({name:"joe"},{" ...
- mongoDB 修改器()
-----------------------------------2016-5-26 15:56:57-- source:[1],MongoDB更新操作符
- MongoDB修改器的使用2
1."$inc"的使用 主要用来增加数值,比如网站的访问量,点击量,流量等 db.games.insert({game:"pinball",user:" ...
- mongodb的修改器
在mongodb中通常文档只会有一部分要更新,利用原子的更新修改器,可以做到只更新文档的一部分键值,而且更新极为高效,更新修改器是种特殊的键,用来指定复杂的更新操作,比如调整.增加.或者删除键,还可以 ...
- [转载]MongoDB的$inc修改器
MongoDB的$inc修改器相当于编程语言中的 “+=”“$inc”只能用于操作数值类型的数据,包括整数.长整数和双精度浮点数,用于其他类型的数据会导致操作失败. >db.users.find ...
- MongoDB之修改器
MongoDB之修改器 $set 简单粗暴 {name: valuel} 直接将key对应的值赋值给value. db.xxoo.insert({}, {set: {key: value}}) / ...
随机推荐
- Java printf
- ubuntu 14.04 下evolution邮箱客户端设置(腾讯企业邮箱)
安装 evolution 有PPA可用,支持 Ubuntu 14.04 及衍生系统.打开终端,输入以下命令: sudo add-apt-repository ppa:fta/gnome3 sudo a ...
- c# WebBrower 与 HttpRequest配合 抓取数据
今天研究一个功能,发现一个问题. 通过webbrower模拟用户自动登录可以完成,并且可以取到相对应的页面内容. 但是如果页面中通过ajax,动态加载的内容,这种方式是取不到的,于是用到了httpRe ...
- iOS进阶_FMDB的简单使用
先引入FMDB第三方,点击查看方法 一.创建表 1.创建sql语句 NSString *createSql = @"create table if not exists t_stude ...
- Nutch2+Hbase环境部署和基本使用
由于项目想借助Nutch来做网络爬虫,所以一番研究,发现网上文档比较散,学习的很艰难,因此总结了一些,放上来与大家交流. 1 环境部署 Nutch有1.x系列和2.x系列,主要区别是2.x ...
- [XAF] How to represent an enumeration property via a drop-down box with check boxes
https://www.devexpress.com/Support/Center/Example/Details/E689
- java-android推送
之前做的推送,考虑了很多,最后因为各个因素,选择了极光的.
- 是uibutton跟tableviewcell同步使用一个bug
这个问题是uibutton跟tableviewcell同步使用一个bug,不关delay一点毛事,证据就是点击事件没问题,so,搜到一个方法解决了这个问题.uibutton分类symbian2+ios ...
- Smack 3.3.1 发布,Java 的 XMPP 开发包
Smack 3.3.1 发布了,这是一个小更新版本,主要更新包括: [SMACK-441] - Memory leak in KeepAliveManager [SMACK-447] - Compre ...
- guzzle调用失败-缺少guzzle
用composer安装了,但是目前为止还有问题.开发环境是 WAMP PHP5.4.12. 已经打开PHP.ini 的SSL扩展,现在还是提示缺少 curl-ca-bundle.cr 报错 No sy ...