mongodb 输出数组字段_MongoDb文档操作、索引操作

学习主题:MongoDb

学习目标:

  1. 掌握mongodb文档的更新
  2. 掌握mongodb文档的删除
  3. 掌握mongodb文档的查找
  4. 掌握mongodb文档的条件操作符
  5. 掌握mongodb中的索引操作
  6. Mongodb的更新方式
  7. Update()函数更新
  8. Save()函数更新

Mongodb的update更新?

Update用于更新已存在的文档(只更新更新内容中数据,文档数据易丢失)

语法格式:db.COLLECTION_NAME.update({查询条件},{更新内容},{更新参数(可选)})

Mongodb的更新操作符有哪些 都是什么意思?

$set (指定一个键,并更新键值,若不存在则创建)

db.dev.update({title:'语文小组'},{$set:{title:'物理小组'}})

使用multi参数实现批量更新操作

db.dev.update({title:'dev'},{$set:{size:'500'}},{multi:true})

$inc(数值类型):可以对文档的某个值为数值型(只能为满足要求的数字)的键进行增减操作

$unset 删除键

$push (数组类型的键)

db.dev.update({title:'dev'},{$push:{tags:'JAVA 大数据 AI'}})

$pop:(删除数据元素)

db.dev.update({title:'abc'},{$pop:{tags:1}}) //1表示从尾删

db.dev.update({title:'abc'},{$pop:{tags:-1}} //-1表示从头删

$pull 从数组中删除满足条件的元素

db.dev.update({title:'abc'},{$pull:{tags:'34'}})

$pullAll 从数据中删除满足条件的多个元素

$rename 对键重新命名

Mongodb的save()更新?

Save()方法通过传入的文档来替换已有文档

语法格式:save({文档})

例如:修改title并删除tag数组

db.dev.save({"_id" : ObjectId("5dbd292c503ed06c738dc15b"),title:'def'})

Mongodb删除文档的三种方式?

根据主键删除文档

db.dev.remove({"_id" : ObjectId("5dbd292c503ed06c738dc15b")})

如果使用的条件在集合中可以匹配多条数据,那么remove函数会删除所以满足条件的数据

db.dev.remove({title:"dev"},1)

Db.repairDatabase()回收磁盘空间(需要管理员账户)

DeleteOne()函数删除一条文档

DeleteMany()函数删除多条文档

删除集合中的所有文档

Remove({})

deleteMany({})

Mongodb如何实对文档的查询,请举例说明?

使用find()函数查询文档

Find({查询条件},{指定投影的键})

使用pretty()函数格式化显示

FindOne({查询条件},{指定投影的键}) 自带格式化显示

db.dev.find({title:/a/}) //查询标题含有a内容

db.dev.find({title:/^a/}) //查询以a开头

db.dev.find({title:/a$/})//查询以a结尾

Mongodb中的投影操作指的是?

投影键显示该列查询的结果

语法格式为:find({查询条件},{投影键名:1(显示该列)|0(不显示该列)})

db.dev.find({title:"dev"},{title:1})

条件运算符有哪些 分别什么意思?

$gt 大于

db.dev.find({size:{$gt:300}})

$lt 小于

db.dev.find({size:{$lt:300}})

$gte 大于等于

$lte 小于等于

$eq 等于

$ne 不等于

$and 并且

db.dev.find({$and:[{size:{$gt:100}},{size:{$lt:400}}]})

$or 或者

db.dev.find({$or:[{title:{$eq:'test2'}},{size:{$gt:300}}]})

$type 类型检索数据

db.dev.find({title:{$type:'number'}})

and和or如何联合使用?

db.dev.find({$or:[{$and:[{title:{$eq:'test5'}},{size:500}]},{size:{$lt:400}}]})

f6d310cc26aa5a6f34315b3b46ffc614.png

每页显示5条查看第5页的数据如何实现?

db.dev.find({},{title:1,_id:0}).skip(5).limit(5)

如何实现排序,两个条件如何排序 如年龄一致按照分数排序?

db.dev.find({size:{$type:'number'}},{title:1,size:1,_id:0}).sort({size:1})

如何创建索引?

db.dec.createIndex({title:1},{background:true})

如何查看索引?

db.dev.getIndexes()

db.dev.getIndexSpecs()

db.dev.getIndexKeys()

删除索引有几种方式,分别举例说明?

删除全部索引

db.dev.dropIndexes()

删除指定索引

db.dev.dropIndex(‘title_1’)

索引类型有哪些,有何作用?

单字段索引 在索引中只包含一个键,查询时,可加速对该字段的各种查询请求

交叉索引 一个集合的多个字段分别建立索引,在查询的时候通过多个字段作为查询条件。

复合索引 针对多个字段联合创建索引,满足多字段组合查询,也满足匹配符合索引前缀的查询

多key索引 多key索引会为数组的每个元素建立一条索引

文本索引

部分索引

db.dev.createIndex({size:1},{partialFilterExpression:{size:{$gt:300}}})

使用索引需要注意什么?

创建索引需要在管理员admin数据库下进行操作,不能有重复字段,出现重复字段则不能创建就会报错。

索引额外属性

db.dev.createIndex({title:1},{background:true,unique:true})

索引限制指的是?

额外开销:每个索引占据一定的存储空间,在进行插入,更新和删除操作时也需要对索引进行操作。所以,如果你很少对集合进行读取操作,建议不使用索引

内存(RAM)使用 由于索引是存储在内存(RAM)中,你应该确保该索引的大小不超过内存的限制。

如果索引的大小大于内存的限制,MongoDB会删除一些索引,这将导致性能下降

查询限制

索引不能被以下的查询使用:

正则表达式及非操作符,如 $nin, $not, 等。

算术运算符,如 $mod, 等。

$where 子句

所以,检测你的语句是否使用索引是一个好的习惯,可以用explain来查看。

索引键限制

插入文档超过索引键限制

如果文档的索引字段值超过了索引键的限制,MongoDB不会将任何文档转换成索引的集合。与mongorestore和mongoimport工具类似。

最大范围

集合中索引不能超过64个

索引名的长度不能超过128个字符

一个复合索引最多可以有31个字段

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/534008.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

表情符号mysql utf8mb4_mysql utf8mb4与emoji表情

一 什么是Emojiemoji就是表情符号;词义来自日语(えもじ,e-moji,moji在日语中的含义是字符)表情符号现已普遍应用于手机短信和网络聊天软件。emoji表情符号,在外国的手机短信里面已经是很流行使用的一种表情。手机上如何使用emoji&…

html自适应_web前端入门到实战:HTML 文档流,设置元素浮动,导致父元素高度无法自适应的解决方法...

元素浮动定义float 属性定义元素在哪个方向浮动。以往这个属性总应用于图像,使文本围绕在图像周围,不过在 CSS 中,任何元素都可以浮动。浮动元素会生成一个块级框,而不论它本身是何种元素。如果浮动非替换元素,则要指定…

idea 远程调试_我的天!你竟然不会用IDEA远程调试Tomcat...

# 准备工作明确的远程服务器的IP地址,某些我是:192.168.92.128关掉服务器防火墙:service iptables stop# 本地远程服务器配置添加远程服务器,如下图复制远程服务器自动生成的JVM参数,等下有用,如下图&#…

跨域获取后台数据undefined_同源策略amp;JSONP跨域

同源策略&JSONP跨域同源策略 对于同源的定义,MDN给出了这样的解释:如果两个页面的协议,端口(如果有指定)和主机都相同,则两个页面具有相同的源。如何确定两个页面是否同源,只要比较两个页面…

python 除数不能为零的报错有哪些_【社区精选40】Python错误处理及代码调试方法(文末赠书中奖名单)...

本文整理自爱数据学院中的问答更多精彩问答,进入下方社区网站查看http://www.lovedata.cn/invitation社区精选话题 第40期Python错误处理及代码调试方法一次写完代码程序并能够正常运行的概率很小很小,总会有各种各样的错误bug需要处理。有的报错简单&a…

mac mysql prefpane_【MySQL数据库开发之一】Mac下配置安装数据库-MySQL

本站文章均为那么从今天开始陆续会更新数据库和Hibernate框架的博文,也是Himi学习的历程记录,希望大家能共同讨论和研究;OK,本篇简单介绍安装吧,首先到MySQL官方网站:如上图:点击DOWNLOAD &…

系统新模块增加需要哪些步骤_想要吸引人流,儿童乐园需要增加哪些新设备呢...

儿童乐园是现今最火爆的一个投资项目,因为它的主要消费群体是孩子,而现在的家长们对孩子们的宠爱,基本都会答应让孩子们去儿童乐园里面玩耍。但是儿童乐园的投资经营者也会遇见一些小问题,例如儿童乐园添加设备要怎么选择呢&#…

照片打印预览正常打印空白_小米发布口袋照片打印机,可无墨打印3寸背胶照片...

9月11日消息,小米推出一款小米口袋照片打印机。与之前的小米米家照片打印机相比,这款新品更加小巧便携,体积接近充电宝大小,净重仅181g,便于随身携带。小米口袋照片打印机采用ZINK无墨技术打印,即使用嵌入纸…

MySQL优化调优有没有做过_MySQL 调优/优化的 100 个建议

MySQL是一个强大的开源数据库。随着MySQL上的应用越来越多,MySQL逐渐遇到了瓶颈。这里提供 101 条优化 MySQL 的建议。有些技巧适合特定的安装环境,但是思路是相通的。我已经将它们分成了几类以帮助你理解。MySQL监控MySQL服务器硬件和OS(操作系统)调优&…

mysql核心参数_MySQL技术体系之核心参数

本文主要基于MySQL 5.7版本的数据库环境,总结my.cnf文件中核心参数的配置使用,让更多的人对MySQL技术体系有更全面、更专业的深度了解。一、客户端核心参数1、port端口号,默认33062、socketSocket文件地址,默认以.sock为文件名称后…

jtag引脚定义_从逆向分析的角度学习硬件调试技巧JTAG,SSD和固件提取

我想从逆向的角度做了深入了解JTAG,JTAG是许多嵌入式CPU使用的硬件级别调试机制,我希望通过这篇文章从逆向工程师的角度解释如何使用JTAG,并在此过程中提供一些实际示例。0x01 研究目标通过这篇文章,我希望做到以下几点&#xff1…

python virtualenv conda_在vscode中启动conda虚拟环境的思路详解

问题:cudatoolkit cudnn 通过conda 虚拟环境安装,先前已经使用virtualenv安装tf,需要在conda虚拟环境中启动外部python虚拟环境思路:conda prompt即将 [虚拟环境位置] 以参数形式传入 [activate.bat]VSOCDE中的设置添加以下语句{&…

远程过程调用失败_Java开发大型互联网RPC远程调用服务实现之问题处理方案

引言RPC(Remote Procedure Call Protocol)——远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据。在OSI网络…

chrome 新的session 设置_为什么还是由这么多人搞不懂Cookie、Session、Token?

作者:不学无数的程序员链接:https://urlify.cn/Yfm6Vr# Cookie洛:大爷,楼上322住的是马冬梅家吧? 大爷:马都什么? 夏洛:马冬梅。 7大爷:什么都没啊? 夏洛…

eview面板数据之混合回归模型_【视频教程】Eviews系列25|面板数据回归分析之Hausman检验及本章常见问题解答...

点击上方关注我们!本期我们学习Eviews统计建模最后一部分--面板数据回归分析Hausman检验及本章常见问题解答。实操:Hausman检验判断是固定效应模型还是随机效应模型上期我们讲到模型判断若选择模型2,需进一步通过Hausman检验判断固定效应还是随机效应,接…

mybatis mysql selectkey_Mybatis示例之SelectKey的应用

SelectKey在Mybatis中是为了解决Insert数据时不支持主键自动生成的问题,他可以很随意的设置生成主键的方式。不管SelectKey有多好,尽量不要遇到这种情况吧,毕竟很麻烦。SelectKey需要注意order属性,像Mysql一类支持自动增长类型的…

java treetable_在Swing中创建TreeTable | 学步园

TreeTable是Tree和Table的一个结合-就是一个即能够展开和收起行,同时也能够显示多个列的组件。在Swing的标准包里没有一个叫做JtreeTable的组件,但是我们很容易通过把Jtree做成Jtable的渲染器来创建一个这样的组件。这篇文章就是关于如何使用…

python期末大作业_大一期末考试很重要,考得好不仅有机会有钱拿,还有机会换专业...

现阶段很多高校放寒假的时间已经公布,这也就意味着,大学期末考试即将到来。对于大一新生来说,大学的期末考试是比较新鲜的,因为大家都没有经历过。经历过大学考试的学生,都知道大学的大概学习模式,一般情况…

java http 302重定向_Java 纯HTTP请求 禁止302自动重定向

Java 纯HTTP Get请求获取响应内容,如果发生302重定向,继而模拟请求域获取重定向后的响应内容。关键点:设置conn.setInstanceFollowRedirects为false即可示例代码public static void main(String[] args) {try {StringBuffer buffer new Stri…

python 且_Pyface库:一个基于pyqt、pyside、wx且简化的python的GUI

1 说明:1.1 Pyface库由大名鼎鼎的enthought出品。1.2 介绍:1.2.1 英文:traits-capable windowing framework.The pyface project contains a toolkit-independent GUI abstraction layer, which is used to support the "visualization&…