数据更新操作

队友MongoDB而言,数据更新是一件非常麻烦的事情。Mongo通常会存副本数据,数据有变更的时候,最好的做法是删除MongoDB的数据,重新插入。

Mongo中提供了两个函数,一个是save(),一个是update()。

范例:更新存在的数据 -- 将年龄是19岁的人的成绩都更新为100分

只更新查询出的第一条数据,没有不增加

db.students.update({"age":19},{"$set":{"score":100}},false,false);

所有满足条件的数据都更新

db.students.update({"age":19},{"$set":{"score":100}},false,true);

范例: 更新不存在的数据 -- 将年龄是30岁的人更新他的名称name

db.students.update({"age":30},{"$set":{"name":"小李子"}},true,false);

第一个true表示如果不存在,则创建一条新数据。这种功能用的比较少。

修改器

1.inc 主要针对一个数字字段,增加某个字段的数据内容。

范例:将所有年龄为19岁的学生成绩一律减少30分。

db.students.update({"age":19},{"$inc":{"score":-30,"age":1}},false,true);

2.set 进行内容重新设置

范例:将年龄为20的人的成绩修改为89

db.students.update({"age":19},{"$set":{"score":-89}},false,true);

3.unset 删除某个成员的内容

范例:删除张三的年龄和成绩信息

db.students.update({"name":"张三"},{"$unset":{"age":1,"score":1}},false,true);

4.push 相当于将内容追加到指定的成员之中(基本上是用于数组)。一次增加一个元素,如果增加的是数组,表示一次增加一个数组。

范例:向张三添加课程信息

db.students.update({"name":"张三"},{"$push":{"course":["语文","数学"]}},false,true);

如果没有数组,就进行一个新的数组的创建,如果有则进行内容的追加。

5.pushAll与push类似,可以一次追加多个内容到数组里面

db.students.update({"name":"张三"},{"$pushAll":{"course":["美术","音乐"]}},false,true);

6.addToSet 如果已存在就不添加了

db.students.update({"name":"张三"},{"$addToSet":{"course":"美术"}},false,true);

7.pop 删除数组内的数据。文档是行,成员是列,集合是表。-1表示第一个课程。1表示最后一个课程。

db.students.update({"name":"张三"},{"$pop":{"course":-1}});

8.pull 从数组中删除指定内容的数据

db.students.update({"name":"张三"},{"$pull":{"course":"美术"}});

9.pullAll一次性删除多个内容

db.students.update({"name":"张三"},{"$pullAll":{"course":["音乐","舞蹈"]}});

10.rename 为成员名称重命名

db.students.update({"name":"张三"},{"$rename":{"course":"课程"}},false,true);

MongoDB数据修改案例的更多相关文章

  1. mongodb 数据修改

    update:语法格式如下: db.collection.update( <query>, <update>, { upsert: <boolean>, multi ...

  2. MongoDB数组修改器更新数据(转)

    MongoDB数组修改器更新数据    这里,我们将了解一下数组修改器.数组,是我们经常看到和使用到的且非常有用的数据结构:它不仅可以通过索进行引用,还可以作为集合来使用.数组修改器,顾名思义,它是用 ...

  3. NoSQL 数据库案例实战 -- MongoDB数据备份、恢复

    MySQL数据迁移到MongoDB数据库中 前言 一.数据备份 二.数据恢复 前言 本环境是基于 Centos 7.8 系统构建mongodb-enterprise-4.2.8学习环境具体构建,请参考 ...

  4. Android之三种网络请求解析数据(最佳案例)

    AsyncTask解析数据 AsyncTask主要用来更新UI线程,比较耗时的操作可以在AsyncTask中使用. AsyncTask是个抽象类,使用时需要继承这个类,然后调用execute()方法. ...

  5. D3js初探及数据可视化案例设计实战

    摘要:本文以本人目前所做项目为基础,从设计的角度探讨数据可视化的设计的方法.过程和结果,起抛砖引玉之效.在技术方案上,我们采用通用web架构和d3js作为主要技术手段:考虑到项目需求,这里所做的可视化 ...

  6. MongoDB学习笔记(三) 在MVC模式下通过Jqgrid表格操作MongoDB数据

    看到下图,是通过Jqgrid实现表格数据的基本增删查改的操作.表格数据增删改是一般企业应用系统开发的常见功能,不过不同的是这个表格数据来源是非关系型的数据库MongoDB.nosql虽然概念新颖,但是 ...

  7. 通过logstash-input-mongodb插件将mongodb数据导入ElasticSearch

    目的很简单,就是将mongodb数据导入es建立相应索引.数据是从特定的网站扒下来,然后进行二次处理,也就是数据去重.清洗,接着再保存到mongodb里,那么如何将数据搞到ElasticSearch中 ...

  8. MongoDB数据创建与使用

    MongoDB数据创建与使用 创建数据库 代码功能:读取本地文本文件,并保存到数据库中 import pymongo #连接mongo数据库 client = pymongo.MongoClient( ...

  9. MongoDB之修改器

    MongoDB之修改器 $set  简单粗暴  {name: valuel} 直接将key对应的值赋值给value. db.xxoo.insert({}, {set: {key: value}}) / ...

随机推荐

  1. iOS_第3方类库MBprogressHUD

    1,将下载好的第3方类库MBprogressHUD源代码包增加到project(事实上就是一个.h和.m文件) 2,进入project的Build Phases,将源代码包里面的所有.m文件所有加入到 ...

  2. bzj1106: [POI2007]立方体大作战tet

    比较玄幻的题目. 考虑两个不同的元素 假设位置是 a...a...b...b... 那么不需要通过交换ab来消除ab,各自弄就行 若是 a...b...b...a... 那也没必要交换,先把b消掉就好 ...

  3. bzoj5216: [Lydsy2017省队十连测]公路建设

    题目思路挺巧妙的. 感觉应该可以数据结构一波,发现n很小可以搞搞事啊.然后又发现给了512mb,顿时萌生大力线段树记录的念头 一开始想的是记录节点的fa,然后发现搞不动啊?? 但其实边肯定最多只有n- ...

  4. POJ 1201 差分约束+SPFA

    思路: 差分约束,难在建图.(我是不会告诉你我刚学会SPFA的...) 把每个区间的ai–>bi连一条长度为ci的边. k–>k+1连一条长度为0的边. k+1–>k连一条长度为-1 ...

  5. 抓取git的log文件批处理命令示例

    @echoset sincedate="2016-04-28 00:00:01"          ::变量set beforedate="2016-04-29 00:0 ...

  6. 欢迎来到SQL学院

    给学习SQL的同学的福利@ http://sqlschool.modeanalytics.com/ 第一部分 学习SQL 本教程是专为那些想用数据回答问题的人们而设计的.从很大程度上讲,SQL是数据分 ...

  7. AVL数

    平衡二叉树(AVL树) AVL树是一种二叉搜索树,并且每个节点的左右子树高度之差最多为1.AVL树是第一个在最坏的情况下保证以O(logn)的时间进行搜索,插入和删除操作的数据结构,AVL树能在对数时 ...

  8. Linux下安装桌面

    1.         安装之前先测试是否有桌面 2.         建立yum源文件   3.         挂载好光盘(/rhel自己创建)   4.         使用yum list 查看 ...

  9. activity_note

    在activiti任务中,主要分为两大类查询任务(个人任务和组任务): 1.确切指定了办理者的任务,这个任务将成为指定者的私有任务,即个人任务. 2.无法指定具体的某一个人来办理的任务,可以把任务分配 ...

  10. testng+selnium+eclipse的测试框架运用

    一:TestNG在Eclipse中的安装(1)点击eclipse中的Help->Install New Software (2)点击[Add]按钮,输入相应的地址(3)勾选加载出来的TestNG ...