修改操作符的使用
$set
修改一个域的值,增加一个域
阿哲年龄修改为33
db.class1.update({name:'阿哲'},{$set:{age:33}})
如果sex域不存在则会添加这个域
db.class1.update({name:'阿蓉'},{$set:{sex:'w'}})
$unset
删除一个域
删除sex域
db.class1.update({name:'小陈'},{$unset:{sex:''}})
* 每个操作符可以同时操作多项
db.class1.update({name:'陈'},{$set:{age:36,sex:'m'}})
* 一次修改可以同时使用多个操作符
db.class1.update({name:'阿宝'},{$set:{name:'老王'},$unset:{sex:''}})
$rename
修改域名
将sex域名改为gender
db.class1.update({sex:{$exists:true}},{$rename:{sex:'gender'}},false,true)
$setOnInsert
如果第三个参数为true且插入数据,则表示插入文档的补充内容。如果不插入文档则不起作用
如果插入新文档则setOnInsert中键值对也作为文档内容
db.class1.update({name:'阿文'},{$set:{age:32},$setOnInsert:{gender:'m'}},true)
$inc
加减修改器
db.class1.update({},{$inc:{age:-1}},false,true)
$mul
乘法修改器
db.class2.update({},{$mul:{age:2}},false,true)
* $inc   $mul  参数可以使整数小数正数负数
$min 
如果筛选文档指定域的值小于min值则不修改,大于min值则修改为min值
如果age大于18则修改为18
db.class2.update({},{$min:{age:18}},false,true)
$max
如果筛选文档指定域的值大于max值则不修改,小于max值则修改为max值
将年龄不到30的修改为30
db.class1.update({},{$max:{age:30}},false,true)

数组修改器
$push
向数组中添加一项
向score数组中添加一项
db.class2.update({name:'小亮'},{$push:{score:91}})
$pushAll
向数组中添加多项
db.class2.update({name:'小明'},{$pushAll:{score:[5,10]}})
$pull
从数组中删除一项
db.class2.update({name:'小明'},{$pull:{score:10}})
$pullAll
从数组中删除多项
db.class2.update({name:'小明'},{$pullAll:{score:[58,5]}})
$each  
对多个值进行逐一操作
db.class2.update({name:'小明'},{$push:{score:{$each:[60,10]}}})
$position  
指定插入位置
配合each使用将数据插入到指定位置
db.class2.update({name:'小红'},{$push:{score:{$each:[5],$position:1}}})
$sort  
对数组进行排序
对数组进行排序
db.class2.update({name:'小明'},{$push:{score:{$each:[],$sort:1}}})
$pop 
弹出一项
1表示弹出数组中最后一项,-1表示弹出第一项
db.class2.update({name:'小明'},{$pop:{score:-1}})
$addToSet
向数组中添加一项,但是不允许添加重复内容
如果数组中没有80则添加80
db.class2.update({name:'小红'},{$addToSet:{score:80}})
时间类型
mongodb 中支持时间格式 : ISODate()
1. 使用new Date() 自动生成当前时间
db.class0.insert({book:'Python入门',date:new Date()})
2. 使用 ISODate() 生成当前时间
db.class0.insert({book:'Python精通',date:ISODate()})
3. 获取计算机时间生成时间格式字符串 Date()
db.class0.insert({book:'Python疯狂',date:Date()})
指定时间:
ISODate()
功能: 生成mongodb时间存储类型
参数: 不加参数生成当前时间
指定时间格式参数:
"2018-01-01 12:12:12"
"20180101 12:12:12"
"20180101"
db.class0.insert({book:'Python崩溃',date:ISODate("2018-07-13 11:23:36")})
时间戳:
通过当前的时间生成的一个时间节点标志
valueOf()
生成某个标准时间的时间戳
db.class0.insert({book:'Python重生',date:ISODate().valueOf()})
Null 类型:
值 : null  
1. 如果某个域存在却没有值可以设置为null
表示date没有实际意义的值
db.class0.insert({book:'Python编程',date:null})
2. 在查找时可以找到值为null或者不存在某个域的文档
查找到date值为null或者不存在date域的文档
db.class0.find({date:null},{_id:0})
数组的下标操作方式:
可以通过  域名.下标  的方式具体操作数组的某一项
查找数组 0 项大于90的文档
db.class2.find({'score.0':{$gt:90}},{_id:0})
将score 第1项改为10
db.class2.update({name:'小红'},{$set:{'score.1':10}})

内部文档操作(Object):
文档内部某个域的值还是一个文档,则这个文档称为内部文档类型数据
* 通过  外部域.内部文档域  的方式引用内部文档中某个域的值进行操作
db.class3.find({'books.title':'狂人日记'},{_id:0})
db.class3.update({"books.title":'骆驼祥子'},{$set:{"books.price":48.6}})
查找结果的下标引用
可以通过下标的方式获取查找结果的某一项
获取查找结果的 第 2 项
db.class1.find({},{_id:0})[2]
综合示例 : 
使用之前的grade数据库
1.将小红年龄改为8岁,兴趣爱好变为跳舞画画
db.class.update({$set:{age:8,hobby:['dance','draw']}})
2. 追加小明兴趣爱好 唱歌
db.class.update({$push:{hobby:'sing'}})
3. 追加小王兴趣爱好,吹牛,打篮球
db.class.update({$pushAll:{hobby:['吹牛','basketball']}})
4. 小李兴趣多了跑步唱歌,但是要确保不和以前的重复
db.class.update({$addToSet:{hobby:{$each:['running','sing']}}})
5. 将该班所有同学年龄加1
db.class.update({},{$inc:{age:1}},false,ture)
6. 删除小明的sex属性
db.class.update({$unset:{sex:''}})
7.删除小李兴趣中的第一项
db.class.update({$pop:{hobby:-1}})
8,删除小红兴趣中的画画和唱歌
db.class.update({$pullAll:{hobby:['draw','sing']}})
9. 为小红增加一个域,为  score:{english:93,chinese:92,match:78}
db.class.update({$set:{score:{english:93,chinese:92,match:78}}})
10. 给小红数学成绩加5分
db.class.update({$inc:{'score.math':5}})
11. 小明的第一爱好改为computer
db.class.update({$set:{'hobby.0':'computer'}})
索引:
指建立指定键值及所在文档中存储位置的对照清单,
使用索引可以方便我们进行快速查找,减少数据遍历次数,从而提高查找效率
Mongodb创建索引:
ensureIndex()
功能 : 
创建索引
参数 : 
第一个为对哪个域创建索引
第二个为索引的选项
对name域创建索引
db.class1.ensureIndex({name:1})
* 1表示正向索引  -1表示逆向索引
查看某个集合中的索引:
db.class1.getIndexes()
* _id是系统为每个集合自动创建的索引
自定义索引名称
通过第二个参数传入索引选项实现
db.class1.ensureIndex({age:1},{name:'ageIndex'})
* 同一个域不能重复创建相同的索引,一个集合中索引名也不要相同

删除索引:
dropIndex()
功能: 
删除一个索引
参数: 
索引名或者索引键值对
db.class1.dropIndex({name:-1})
db.class1.dropIndex("ageIndex")
dropIndexes()
功能:
删除所有索引
删除class1中所有索引,但是不会删除_id索引
db.class1.dropIndexes()

其他索引类型:
复合索引:
同时根据多个域创建一个索引
根据name和age域查询都为索引查询,比单独创建两个索引表更节省空间
db.class1.ensureIndex({name:1,age:-1})
数组和子文档索引:
如果对某个数组和子文档域创建索引,那么根据数组和子文档的查找均为索引查找
如果对score域创建索引则 下面的查找也是索引查找
db.class2.find({'score.0':60},{_id:0})
覆盖索引:
查找操作需要获取的域,只有索引域没有其他域。
此时索引表可以直接提供给用户想要的内容,提高查找效率
唯一索引:
创建的索引,索引域值无重复,此时可以创建唯一索引
唯一索引数据结构更加便于查找
对name创建唯一索引,name值不能有重复
db.class1.ensureIndex({name:1},{unique:true})
* 当对某个域创建唯一索引,该域就不能再插入重复数据
稀疏索引:
只针对有指定域的文档创建索引表,如果某个文档没有该域则不会插入到索引表中
对age创建稀疏索引
db.class1.ensureIndex({age:1},{sparse:true})
索引约束:
1. 索引表也需要占用一定的磁盘空间
2. 当数据发生更新时索引表也要随之更新
综上: 
1. 数据量比较大时更适合创建索引,数据量较小时没有必要付出索引代价
2. 频繁进行查找操作而不是更新删除插入操作,此时更适合使用索引
固定集合:
mongodb中可以创建大小固定的集合,称之为固定集合。
特点:  
1.插入速度更快,顺序查找更快
2.可以控制集合的空间大小
3.能够自动淘汰早期数据
使用: 
日志处理
临时缓存
创建:
db.createCollection(collection,{capped:true,size:10000,max:1000})
参数:
capped:true:
创建固定集合
size:10000:
固定集合的大小  字节数
max :1000:
表示最多多少条文档
创建一个固定集合
db.createCollection('log',{capped:true,size:10000,max:3})

Python全栈 MongoDB 数据库(数据的修改)相关推荐

  1. Python全栈 MySQL 数据库 (索引、数据导入、导出)

    ParisGabriel 每天坚持手写  一天一篇  决定坚持几年 为了梦想为了信仰  开局一张图 表字段重命名(change) alter table 表名 change 原名 新名 数据类型: S ...

  2. python全栈还是大数据好_青岛PYTHON全栈应用开发班

    .部分 Python环境配置 Python环境配置 1.Python的历史和它的哲学思想 2.Python开发环境安装与配置 3.Python各种编辑器之间的选择,和安装配置 4.交互式解释器及IDE ...

  3. python点击事件onclick_巨蟒python全栈开发数据库前端6:事件onclick的两种绑定方式onblur和onfocus事件window.onload解释小米商城讲解...

    1.回顾上节内容(JavaScript) 一.JavaScript概述 1.ECMAScript和JavaScript的关系 2.ECMAScript的历史 3.JavaScript是一门前后端都可以 ...

  4. 最新python全栈3期高级开发工程师 独家完整版

    课程目录: │   ├─1-10 │  │   │  ├─day01 │  │      01 python全栈s3 day1 计算机发展史.mp4 │  │      02 python全栈s3 d ...

  5. 2018 python全栈3期高级开发工程师 独家完整版

    课程目录: │ ├─1-10 │ │ │ ├─day01 │ │ 01 python全栈s3 day1 计算机发展史.mp4 │ │ 02 python全栈s3 day1 计算机系统.mp4 │ │ ...

  6. PythonStock(38)全栈股票系统:Python全栈股票系统,使用vue进行前端界面开发,修改接口可以展示股票数据,持续开发中。

    目录 前言 0,关于Python全栈股票系统2.0,github,5.8K星星 1,Python全栈股票系统,更改使用elementUI开发 2,使用vue-element-admin,进行开发 3, ...

  7. PythonStock(37)股票系统:Python股票系统发布V2.0版本,改个名字吧,叫Python全栈股票系统2.0,可以实现数据的抓取(akshare),统计分析,数据报表展示。

    目录 前言 1,关于Python全栈股票系统V2.0 2,在CSDN上居然有人给代码打包收费下载!! 2,更新docker镜像 3,总结 前言 使用Python开发一个web股票项目. [github ...

  8. python作品_专业解读 | 制作游戏、开发APP、 爬虫采集数据等背后,Python全栈专业背后还有更大的世界...

    01 什么是Python全栈专业 全栈是指利用多种技能独立完成产品开发,以实践方式将前端.后端.移动端.服务器端等领域结合到一起. 例如我们可以用全栈的技术来开发跳一跳或者是豆瓣这样的产品. 什么是p ...

  9. 案例驱动python编程入门-郑州高薪python全栈工程师

    阶段一.Python 全栈工程师之必知必会 - 前端开发技术 课程一.入门必备 - 新手学 HTML5+CSS3 1.HTML基本标签 2.W3C标准及XHTML1.0基本规范 3.表格.表单及框架 ...

最新文章

  1. Windows核心编程 第十八章 堆栈
  2. Spring Cloud构建微服务架构(七)消息总线(续:Kafka)
  3. 2020 年七大 AI 编程语言大盘点
  4. c语言指针用法有哪些
  5. MySQL数据库安全配置
  6. 【maven配置】IDEA自动生成的pom文件报错:URI Is Not Registered
  7. ubuntu 18.04桌面版启动错误: Unable to mount root fs on unknown-block(0,0)
  8. DRBD+Heratbeat+NFS高可用文件共享存储
  9. MATLAB中LINGO软件及数学规划问题应用
  10. 控制系统--线性定常数系统的传递函数
  11. 项目管理中如何应对用户频繁的需求变更?
  12. 网络舆情监测关键词怎么设置与搜集的方法技巧
  13. 二蛋和培训机构斗智斗勇的血泪史
  14. java mysql 流水号_java实现数据库序号(流水号)
  15. Android 面试中高级上
  16. Masonry自动布局详解五:比例(multipliedBy)
  17. 记一次Linux文件系统引发的项目启动错误(war包没有问题只有指定目录启动报错)
  18. 基于 JavaFX 开发的聊天客户端 OIM-即时通讯
  19. jpype踩的那些坑
  20. week1:History: Dawn of Electronic Computing

热门文章

  1. python环境变量配置_21 python环境的配置
  2. Tick技术栈之InfluxDB
  3. java定义final_Java中何时将方法声明为final的
  4. boot lib分离 spring_SpringBoot+MyBatis+MySQL读写分离(实例)A
  5. 动森服务器维护时长,《动森》在两三年内都会不断更新内容 保证游戏体验
  6. python开发专属表情包_Python开发个人专属表情包网站
  7. bat射击游戏代码_这张图打开就是3D射击游戏,我是服气的
  8. 傅里叶变换的初级理解二
  9. php7 passthru,认识PHP 7虚拟机
  10. table取tr对象 vue_javascript的DOM对象终极总结:你必看的js面向对象