mongo数据更新(修改器)
数据更新
简单的做法是删除重新插入
update()函数
语法
db.集合.update(更新条件,新的对象数据(更新操作符),upsert,multi)
upsert如果要更新的数据不存在,则增加一条新的内容(true为增加,false不增加)
multi:是否只更新满足条件的第一条记录,设置为false只更行第一个,true全更新
> db.stu.find({},{"_id":})
{ "name" : "张三", "sex" : "男", "age" : , "score" : , "address" : "河南" }
{ "name" : "李四", "sex" : "女", "age" : , "score" : , "address" : "山东" }
{ "name" : "王五", "sex" : "男", "age" : , "score" : , "address" : "江苏" }
{ "name" : "赵六", "sex" : "男", "age" : , "score" : , "address" : "山东" }
{ "name" : "孙七", "sex" : "女", "age" : , "score" : , "address" : "湖北" }
{ "name" : "tom", "sex" : "男", "age" : , "score" : , "address" : "海南" }
{ "name" : "lucy", "sex" : "女", "age" : , "score" : , "address" : "浙江" }
{ "name" : "jack", "sex" : "男", "age" : , "score" : , "address" : "美国" }
{ "name" : "smith", "sex" : "男", "age" : , "score" : , "address" : "美国" }
#.把年龄<20岁的分数更新为60
db.stu.find({"age":{"$lt":}},{"_id":});
{ "name" : "张三", "sex" : "男", "age" : , "score" : , "address" : "河南" }
{ "name" : "王五", "sex" : "男", "age" : , "score" : , "address" : "江苏" }
{ "name" : "smith", "sex" : "男", "age" : , "score" : , "address" : "美国" }
db.stu.update({"age":{"$lt":}},{"$set":{"score":}},false,false);
WriteResult({ "nMatched" : , "nUpserted" : , "nModified" : })
#只修改了一个
db.stu.find({"age":{"$lt":}},{"_id":});
{ "name" : "张三", "sex" : "男", "age" : , "score" : , "address" : "河南" }
{ "name" : "王五", "sex" : "男", "age" : , "score" : , "address" : "江苏" }
{ "name" : "smith", "sex" : "男", "age" : , "score" : , "address" : "美国" }
#全部修改
db.stu.update({"age":{"$lt":}},{"$set":{"score":}},false,true);
db.stu.find({"age":{"$lt":}},{"_id":});
{ "name" : "张三", "sex" : "男", "age" : , "score" : , "address" : "河南" }
{ "name" : "王五", "sex" : "男", "age" : , "score" : , "address" : "江苏" }
{ "name" : "smith", "sex" : "男", "age" : , "score" : , "address" : "美国" }
save()
db.stu.save({"_id" : ObjectId("592cc2e00be561e9e879bcb5"),"name":'张三三'});
只能根据_id更新
修改器
1.$inc :针对于一个数字字段,修改数字字段内容
语法: {"$inc":{"字段":步调}}
db.stu.find({},{"_id":});
{ "name" : "张三", "sex" : "男", "age" : , "score" : , "address" : "河南" }
{ "name" : "李四", "sex" : "女", "age" : , "score" : , "address" : "山东" }
{ "name" : "王五", "sex" : "男", "age" : , "score" : , "address" : "江苏" }
{ "name" : "赵六", "sex" : "男", "age" : , "score" : , "address" : "山东" }
{ "name" : "孙七", "sex" : "女", "age" : , "score" : , "address" : "湖北" }
{ "name" : "tom", "sex" : "男", "age" : , "score" : , "address" : "海南" }
{ "name" : "lucy", "sex" : "女", "age" : , "score" : , "address" : "浙江" }
{ "name" : "jack", "sex" : "男", "age" : , "score" : , "address" : "美国" }
{ "name" : "smith", "sex" : "男", "age" : , "score" : , "address" : "美国" }
将年龄为21的score-
db.stu.update({"age":},{"$inc":{"score":-}});
只修改了一个 全部修改score- age+
db.stu.update({"age":},{"$inc":{"score":-,"age":}},false,true);
2. $set 内容重置
db.stu.update({"age":},{"$set":{"score":}})
3.$unset 删除某个成员内容
{"$unset":{"字段":}}
删除tom的年龄和地址
db.stu.update({"name":'tom'},{"$unset":{"age":,"address":}});
db.stu.find({"name":"tom"},{"_id":});
{ "name" : "tom", "sex" : "男", "score" : }
4. $push 将内容追加到指定成员中
{"$push":{"字段":value}}
db.stu.find({"name":"jack"},{"_id":});
{ "name" : "jack", "sex" : "男", "age" : , "score" : , "address" : "美国" }
db.stu.update({"name":"jack"},{"$push":{"course":}})
> db.stu.find({"name":"jack"},{"_id":});
{ "name" : "jack", "sex" : "男", "age" : , "score" : , "address" : "美国", "course" : [ ] }
db.stu.update({"name":"jack"},{"$push":{"course":}})
{ "name" : "jack", "sex" : "男", "age" : , "score" : , "address" : "美国", "course" : [ , ] }
5.$pushAll
{"$pushAll":{"成员":数组}}
> db.stu.update({"name":"jack"},{"$pushAll":{"course":[,,]}})
WriteResult({ "nMatched" : , "nUpserted" : , "nModified" : })
> db.stu.find({"name":"jack"},{"_id":});
{ "name" : "jack", "sex" : "男", "age" : , "score" : , "address" : "美国", "course" : [ , , , , ] }
6. $addToSet 向数组里增加内容,不存在时才增加
{"$addToSet":{"成员":"内容"}}
> db.stu.update({"name":"jack"},{"$addToSet":{"course":}});
WriteResult({ "nMatched" : , "nUpserted" : , "nModified" : })
> db.stu.find({"name":"jack"},{"_id":});
{ "name" : "jack", "sex" : "男", "age" : , "score" : , "address" : "美国", "course" : [ , , , , ] }
> db.stu.update({"name":"jack"},{"$addToSet":{"course":}});
WriteResult({ "nMatched" : , "nUpserted" : , "nModified" : })
> db.stu.find({"name":"jack"},{"_id":});
{ "name" : "jack", "sex" : "男", "age" : , "score" : , "address" : "美国", "course" : [ , , , , , ] }
7. $pop 删除数组内的数据
1 (大于0)从尾部出
-1 (小于0)从头部出
> db.stu.update({"name":"jack"},{"$pop":{"course":}});
WriteResult({ "nMatched" : , "nUpserted" : , "nModified" : })
> db.stu.find({"name":"jack"},{"_id":});
{ "name" : "jack", "sex" : "男", "age" : , "score" : , "address" : "美国", "course" : [ , , , , ] }
> db.stu.update({"name":"jack"},{"$pop":{"course":-}});
WriteResult({ "nMatched" : , "nUpserted" : , "nModified" : })
> db.stu.find({"name":"jack"},{"_id":});
{ "name" : "jack", "sex" : "男", "age" : , "score" : , "address" : "美国", "course" : [ , , , ] }
8.$pull 从数组内删除一个指定的元素(根据值)
db.stu.update({"name":"jack"},{"$pull":{"course":}});
> db.stu.find({"name":"jack"},{"_id":});
{ "name" : "jack", "sex" : "男", "age" : , "score" : , "address" : "美国", "course" : [ , ] }
9.$pullAll 一次性删除多个内容
{$pull:{"成员":[数据1,数据2 ,...]}}
> db.stu.update({"name":"jack"},{"$pullAll":{"course":[,,]}});
WriteResult({ "nMatched" : , "nUpserted" : , "nModified" : })
> db.stu.find({"name":"jack"},{"_id":});
{ "name" : "jack", "sex" : "男", "age" : , "score" : , "address" : "美国", "course" : [ ] }
10.$rename 重命名成员名称
{"$rename":{"旧成员名称":"新成员名称"}}
> db.stu.update({"name":"jack"},{"$rename":{"sex":'sex1'}});
WriteResult({ "nMatched" : , "nUpserted" : , "nModified" : })
> db.stu.find({"name":"jack"},{"_id":});
{ "name" : "jack", "age" : , "score" : , "address" : "美国", "course" : [ ], "sex1" : "男" }
mongo数据更新(修改器)的更多相关文章
- mongo数组修改器—$push、$ne、$addtoset、$pop、$pull
这几个方法也很有意思 $push 像已有的数组末尾加入一个元素,要是元素不存在,就会创建一个新的元素,如果元素存在了,就会再添加一个一模一样的元素,会造成元素的重复,所以在使用的时候,要确保该元素不存 ...
- mongo 修改器 $inc/$set/$unset/$pop/$push/$pull/$addToSet
mongo $inc 可以对集合里面的某些值是数字的增减.看代码 $set 可以进行修改,并且不存在的时候默认添加. 同时还能该变数据的类型. 还可以该变内嵌元素的值 用.调用 $unset 删除 ...
- mongo 修改器
[$inc] 作用:修改器$inc可以对文档的某个值为数字型(只能为满足要求的数字)的键进行增减的操作. Example: db.b.update({"uid" : "2 ...
- CE修改器修改DNF 测试视频 阿修罗提升智力增加攻击力
使用CE修改器来修改网络游戏,如DNF 测试视频: CE修改器:指的是Cheat Engine,字面上的意思指的是作弊引擎的意思,是一款内存修改编辑工具.通过修改游戏的内存数据来得到一些原本无法实现的 ...
- python 全栈开发,Day124(MongoDB初识,增删改查操作,数据类型,$关键字以及$修改器,"$"的奇妙用法,Array Object 的特殊操作,选取跳过排序,客户端操作)
一.MongoDB初识 什么是MongoDB MongoDB 是一个基于分布式文件存储的数据库.由 C++ 语言编写.旨在为 WEB 应用提供可扩展的高性能数据存储解决方案. MongoDB 是一个介 ...
- tp5 中 model 的修改器
修改器可以在数据赋值的时候自动进行转换处理 class User extends Model { public function setNameAttr($value){ return strtolo ...
- Blender 之修改器代码分析
Blender的修改器(modifier)模块,默认界面右下块(Property)面板的扳手,分类(修改.生成.形变.模拟)列出所有的修改器.也可以空格键 ...
- mongodb的修改器
在mongodb中通常文档只会有一部分要更新,利用原子的更新修改器,可以做到只更新文档的一部分键值,而且更新极为高效,更新修改器是种特殊的键,用来指定复杂的更新操作,比如调整.增加.或者删除键,还可以 ...
- 【MongoDB】4.MongoDB 原子修改器的 极速修改
文档转自:http://blog.csdn.net/mcpang/article/details/7752736 对于文档的更新除替换外,针对某个或多个文档只需要部分更新可使用原子的更新修改器,能够高 ...
随机推荐
- GIT入门笔记(11)- 多种撤销修改场景和对策--实战练习
1.检查发现目前没有变化$ git statusOn branch masternothing to commit, working tree clean $ cat lsq.txt2222 2.修改 ...
- IIFE的形式、原理和常见写法
immediately invoked function expression 立即调用的函数表达式 出现的形式: 最近做牛客网的JS在线编程,遇到几道考闭包的题目,发现闭包的尾巴那儿经常会出现一对小 ...
- javasciprt性能优化
本文主要是在我读<高性能Javascript>之后,想要记录下一些有用的优化方案,并且就我本身的一些经验,来大家一起分享下, Javascript的加载与执行 大家都知道,浏览器在解析DO ...
- yagmail让发邮件更简单
这是我迄今为止碰到的最良心的库,真tm简单啊 import yagmail # 连接邮箱服务器 yag = yagmail.SMTP(user="wuyongqiang2012@163.co ...
- Django:(博客系统)使用使用mysql数据&创建post/category/tag实体,并同步到数据中
背景: 之前也读过一些关于django的一些书,看过别人写的一些博客系统.但是总有一种看别人的都会,但自己写不出来的感觉,于是为了加深对django的学习就开始动手学习了. 环境搭建: 环境:使用py ...
- [论文阅读] Joint Face Detection and Alignment using Multi-task Cascaded Convolutional Networks(MTCNN)
相关论文:Joint Face Detection and Alignment using Multi-task Cascaded Convolutional Networks 概论 用于人脸检测和对 ...
- shell多进程脚本
#!/bin/bash python_path=/home/huaw/crawler python_name=list_all_v6_crawler.py MAX_SYNC_PROCESS=40 ec ...
- 实验吧_程序逻辑问题(代码审计)&上传绕过
一开始我先随便输入了几个账号名字进行测试,发现当输入的账号名为admin时会发生报错 经过测试果然是一个注入点 当拿到admin密码后发现根本没用,没办法另寻他路 审查元素时发现提示index.txt ...
- Redis常用命令--Sets
Set是不重复且无序的字符串元素的集合. 还可以对set集取交集,并集,差等等. 在Redis中大概有15个操作Set的命令. SADD key member [member ...]:添加一个或者多 ...
- [WC 2010]重建计划
Description Input 第一行包含一个正整数N,表示X国的城市个数. 第二行包含两个正整数L和U,表示政策要求的第一期重建方案中修建道路数的上下限 接下来的N-1行描述重建小组的原有方案, ...