数据更新
简单的做法是删除重新插入
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数据更新(修改器)的更多相关文章

  1. mongo数组修改器—$push、$ne、$addtoset、$pop、$pull

    这几个方法也很有意思 $push 像已有的数组末尾加入一个元素,要是元素不存在,就会创建一个新的元素,如果元素存在了,就会再添加一个一模一样的元素,会造成元素的重复,所以在使用的时候,要确保该元素不存 ...

  2. mongo 修改器 $inc/$set/$unset/$pop/$push/$pull/$addToSet

    mongo $inc 可以对集合里面的某些值是数字的增减.看代码 $set  可以进行修改,并且不存在的时候默认添加. 同时还能该变数据的类型. 还可以该变内嵌元素的值 用.调用 $unset  删除 ...

  3. mongo 修改器

    [$inc] 作用:修改器$inc可以对文档的某个值为数字型(只能为满足要求的数字)的键进行增减的操作. Example: db.b.update({"uid" : "2 ...

  4. CE修改器修改DNF 测试视频 阿修罗提升智力增加攻击力

    使用CE修改器来修改网络游戏,如DNF 测试视频: CE修改器:指的是Cheat Engine,字面上的意思指的是作弊引擎的意思,是一款内存修改编辑工具.通过修改游戏的内存数据来得到一些原本无法实现的 ...

  5. python 全栈开发,Day124(MongoDB初识,增删改查操作,数据类型,$关键字以及$修改器,"$"的奇妙用法,Array Object 的特殊操作,选取跳过排序,客户端操作)

    一.MongoDB初识 什么是MongoDB MongoDB 是一个基于分布式文件存储的数据库.由 C++ 语言编写.旨在为 WEB 应用提供可扩展的高性能数据存储解决方案. MongoDB 是一个介 ...

  6. tp5 中 model 的修改器

    修改器可以在数据赋值的时候自动进行转换处理 class User extends Model { public function setNameAttr($value){ return strtolo ...

  7. Blender 之修改器代码分析

                           Blender的修改器(modifier)模块,默认界面右下块(Property)面板的扳手,分类(修改.生成.形变.模拟)列出所有的修改器.也可以空格键 ...

  8. mongodb的修改器

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

  9. 【MongoDB】4.MongoDB 原子修改器的 极速修改

    文档转自:http://blog.csdn.net/mcpang/article/details/7752736 对于文档的更新除替换外,针对某个或多个文档只需要部分更新可使用原子的更新修改器,能够高 ...

随机推荐

  1. 阿里云API网关(11)外网访问 阿里云API网关内定义的API步骤:

    网关指南: https://help.aliyun.com/document_detail/29487.html?spm=5176.doc48835.6.550.23Oqbl 网关控制台: https ...

  2. 阿里云API网关(10)服务网关业务流程

    一.开放api 二.调用api 三.开发指南 四.其他 1.调试 2.测试 3.mock 4.发布 5.checklist

  3. LDAP的用户需求

    使用LDAP(ApacheDS)构建统一认证服务(SSO单点登录)   构建团队协作的体系,需要涉及很多个系统,如SVN.Jenkins.Trac.Nexus等,而一般而言每个系统均有其用户体系,当我 ...

  4. python入门(4)第一个python程序

    python入门(4)第一个python程序 在交互式环境的提示符>>>下,直接输入代码,按回车,就可以立刻得到代码执行结果.现在,试试输入100+200,看看计算结果是不是300: ...

  5. C# 文件的一些基本操作

    近期程序中经常用到一些文件的操作,现在大致整理一下. 一. 获取文件或文件夹基本信息 1.获取文件信息,组成一个DataTable信息. /// <summary> /// 获取指定目录下 ...

  6. intelj idea中JRebel激活

    1.下载激活软件 https://github.com/ilanyu/ReverseProxy/releases/tag/v1.0 我这边下载的是: 2.双击运行 3.idea中, 不出意外,应该就激 ...

  7. CodeForces 1B-字符串,进制转换与数学

    一个萌新的成长之路 Background 同学们都回家了,只有我和wjh还有邢神在机房敲代码,吃random口味的方便面-- Description Translated by @PC_DOS fro ...

  8. Django Form组件 学生管理系统

    from django.db import models # Create your models here. class Classes(models.Model): title=models.Ch ...

  9. spark2.1:读取hive中存储的多元组(string,double)失败

    这两天和同事一起在想着如何把一个表的记录减少,表记录包含了:objectid(主小区信息),gridid(归属栅格),height(高度),rsrp(主小区rsrp),n_objectid(邻区),n ...

  10. jacascript DOM节点——节点获取与选择器API

    前言:这是笔者学习之后自己的理解与整理.如果有错误或者疑问的地方,请大家指正,我会持续更新! DOM 操作必须等待 HTML 加载完毕之后,才可以获取节点:有两种方法: 把 script 标签放到代码 ...