当前位置: 首页 > news >正文

网站关键词设置代码个人网站酷站赏析

网站关键词设置代码,个人网站酷站赏析,做服装网站的意义是什么,专业家电维修网站建设一、前文回顾 上一篇文章中我们学习了MongoDB中的更新方法&#xff0c;也学了一部分操作符。今天我们将学习最后一个操作“删除”。 二、删除 原始数据如下&#xff1a; 1、deleteOne 语法&#xff1a;db.collection.deleteOne(< query >,< options >) 具体参…

一、前文回顾

上一篇文章中我们学习了MongoDB中的更新方法,也学了一部分操作符。今天我们将学习最后一个操作“删除”。

二、删除

原始数据如下:
image.png

1、deleteOne

语法:db.collection.deleteOne(< query >,< options >)
具体参数参考官网:
db.collection.deleteOne()
该命令会删除满足条件的第一个数据。
示例:例如我们想删除item = journal的数据

db.inventory.deleteOne({"item":"journal"})

image.png

2、deleteMany

语法:db.collection.deleteMany(< query >,< options >)
用法和上面基本一样,有所不同的是 deleteMany会删除所有满足条件的数据,这里不再赘述。

3、小结
至此我们已经把MongoDB的增删改查的基础学习完了,接下来要学习的则是更进阶的部分。我们知道在大多数场景下,数据库的作用是查询数据,所有我们先学习查询的进阶内容。

三、查询进阶—索引(初步介绍)

1、什么是索引

与绝大多数数据库一样,MongoDB也有索引。索引是一种加速查询的数据结构,通常是由B树或者B+树。例如我们现在有一个100万个集合的文档,我们要查找出其中name = “hardy”的数据,如果我们并没有在该字段中添加索引,那么MongoDB默认会使用全表扫描的方式来查询,如下图

如果没有索引,那么MongoDB只能从第一个文档开始 挨个的比较数据是否匹配,在数据量小的时候比较快,但是随着数据量的增大很明显速度会越来越慢。那么该如何优化呢?此时我们可以很容易的想到加索引。
索引可以简单理解为一个字典,他记录了某个值以及该值对应的文档在哪里,知道了具体的位置,那么查询就会变的相当迅速。

B+树的层级通常不高,而且采用的是二分查找法。可以很大程度上减少查询的次数,当找到对应索引之后,索引上会记录文档的ID,此时通过文档的ID再去查询文档,效率就会大大提供。

2、怎么创建索引

语法:db.collection.createIndex( < keys >, < options >, < commitQuorum >)
完整介绍
db.collection.createIndex()
示例:比如我要给集合inventory中的item字段添加索引

db.inventory.createIndex({"item": 1},{unique: true,name: "itemIndex"}
)这里的1表示升序,unique表示当前索引是唯一索引不能重复,而name是索引的名称

运行结果:
image.png
从结果中可以看出,之前存在一个索引,现在存在两个索引。那么问题来了,为什么一开始就存在一个索引呢?这个其实也很好理解,Mongo默认会给每个文档添加一个唯一的ID当作主键,所以这个一开就存在的是主键索引。接下来我们看下结果是否和我们预期的一样。这里我们使用getIndexes命令

db.inventory.getIndexes()

结果如下
image.png

3、怎么查看查询是否用了索引

和MySQL一样,MongoDB中也有explain函数,用于查看数据库的执行计划。这里我们用这个命令来判断当前的查询是否用了索引。

3.1、查询没有索引的字段

这里我们以status字段为例,我们要查询status=A的数据

db.inventory.explain().find({"status":"A"})

部分结果如下
image.png
winningPlan表示实际使用的查询计划,从这里不难看出针对当前查询,MongoDB采用的是COLLSCAN,集合扫描(也可以理解为全表扫描),需要每一个文档挨个的比较。

3.2、查询含有索引的列
db.inventory.explain().find({"item":"mat"})

部分结果如下
image.png
可以看到实际执行的计划是采用IXSCAN也就是索引扫描,于此同时上面的stage还有一个FETCH,这里的FETCH 也就是MySQL中的回表。因为当前的索引只记录了索引值以及当前索引对应的文档ID,MongoDB拿到当前文档的ID后还需要通过ID再次去查一次文档。聪明的你可能会问了,那有没有不用FECTH的情况呢?很显然是有的,比如我们只查询item字段,此时就不需要再次回表。代码如下

db.inventory.explain().find({"id":"mat"},{"item":1})

image.png

当然你可以直接通过ID查询,也是不会回表的。至于为什么个放到后文讲

db.inventory.explain().find({"_id":"66951edbdf24000083007d75"})

结果如下
image.png

四、结束语

本文讲简单的讲述了一下删除文档操作,以及对索引展开了一定的讲解,当然索引的内容远不止此,后面还有更多的内容,希望对你有所帮助。

未完待续

http://www.yayakq.cn/news/937186/

相关文章:

  • 论坛网站在线生成公司介绍网站平台搭建设计论文
  • 做电影网站需要多大空间哪家网站开发培训好
  • 公司网站建设杭州企业官网cms
  • 我要做个网站该怎么做网店美工课程
  • 网页游戏网站快手wordpress 浮窗
  • 手机开发和网站开发前景做预算的网站
  • 江西网站建设价格WordPress 代码修改
  • 孝感网站建设孝感o2o 网站
  • 网站优化在百度网站备案查询上显示未备案是什么意思
  • 学网站开发要下载哪些软件有哪些建一个大网站需要的时间
  • 还没有做网站可以先备案域名吗电影网站怎么制作
  • 网站不备案怎么回事网站开发费用清单
  • 广州网站开发外包哪家好59做网站
  • 营销型网站九大特点查看网站后台登陆地址
  • 花钱做网站需要所有权网站建设有什么作用
  • 哪个旅游网站做的比较好网站开发个性化
  • 西安网站优化公司网站建设合同需要注意什么
  • 广州番禺网站制作mvc 网站 只列出目录
  • 淘宝客网站模板免费下载福州网站建设资讯
  • 网站做多个页面常州西站建设规划
  • 怎么做网站门户烟台做网站公司哪家好
  • 沈阳网页关键词优化广州seo团队
  • 各网站的风格及特点自费社保太坑了亏大了
  • 网站开发服务器知识wordpress 上传图片分类
  • 网站建设完成后交付方式上海注册公司能落户上海吗
  • 一个网站交互怎么做免费做微信请帖的网站
  • 软件下载网站建设短视频免费素材网站
  • 徐州网站开发如何如何做介绍监控公司的网站
  • 网站开发的四个高级阶段包括百度收录申请入口
  • 设计制作一个网站中国建站公司