数据更新
简单的做法是删除重新插入
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. LDAP apacheds解决方案

    Apache DS 配置与管理   LADP基本介绍 LDAP(轻量级目录访问协议)以目录的形式来管理资源(域用户,用户组,地址簿,邮件用户,打印机等等).   特点: 1. LDAP是一种网略协议而 ...

  2. spring7——AOP之通知和顾问

    通知和顾问都是切面的实现形式,其中通知可以完成对目标对象方法简单的织入功能. 而顾问包装了通知,可以让我们对通知实现更加精细化的管理,让我们可以指定具体的切入点. 通知分为前置通知,环绕通知及后置通知 ...

  3. Python入门之函数的介绍/定义/定义类型/函数调用/Return

    本篇目录: 一. 函数的介绍 二. 函数的定义 三. 定义函数的三种类型 四. 函数调用的阶段 五. Return返回值 ======================================= ...

  4. Struts(二十三):使用声名式验证

    Struts2工程中的验证分为两种: 1.基于XWork Validation Framework的声明式验证:Struts2提供了一些基于XWork Validation Framework的内建验 ...

  5. 南阳OJ-14-会场安排问题---区间不相交

    题目链接: http://acm.nyist.edu.cn/JudgeOnline/problem.php?pid=14 题目描述: 学校的小礼堂每天都会有许多活动,有时间这些活动的计划时间会发生冲突 ...

  6. Scale

    Scale刻度组件. 当你希望用户输入某个范围内的一个数值,使用scale组件可以很好的代替Entry组件. 用法: 创建一个指定范围的Scale组件其实非常容易,你只需要指定from和to两个选项即 ...

  7. Python基础Day01

    Python介绍 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC语言 ...

  8. [HNOI 2004]树的计数

    Description 一个有n个结点的树,设它的结点分别为v1, v2, …, vn,已知第i个结点vi的度数为di,问满足这样的条件的不同的树有多少棵.给定n,d1, d2, …, dn,编程需要 ...

  9. codeforces round #419 B. Karen and Coffee

    To stay woke and attentive during classes, Karen needs some coffee! Karen, a coffee aficionado, want ...

  10. ●BZOJ 2329 [HNOI2011]括号修复.cpp

    题链: http://www.lydsy.com/JudgeOnline/problem.php?id=2329 题解: Splay 类似 BZOJ 2329 [HNOI2011]括号修复 只是多了一 ...