Learn Mongodb DB功能命令索引等搜索 ⑤

请添加图片描述

@作者 : SYFStrive

 
请添加图片描述

@博客首页 : HomePage

📜: PHP MYSQL

📌:个人社区(欢迎大佬们加入) 👉:社区链接🔗

📌:觉得文章不错可以点点关注 👉:专栏连接🔗


请添加图片描述
相关专栏

👉 VUEJS(🔥)
👉 MYSQL(🔥)
👉 微信小程序(🔥)
👉 MONGODB(🔥)
👉 UNIAPP开发(🔥)

文章目录

  • MongoDB简介
  • ⭐MongoDB使用功能
    • 📕 分页列表查询
    • ⭐索引 ~ Index
    •   👉 索引的类型
    •   👉 索引的管理操作
    •   👉 索引的使用
    •   👉 涵盖的查询用
  • 总结


                    ⡖⠒⠒⠒⠤⢄⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸   ⠀⠀⠀⡼⠀⠀⠀⠀ ⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢶⣲⡴⣗⣲⡦⢤⡏⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣰⠋⠉⠉⠓⠛⠿⢷⣶⣦⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⠇⠀⠀⠀⠀⠀⠀⠘⡇⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡞⠀⠀⠀⠀⠀⠀⠀⢰⠇⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⡴⠊⠉⠳⡄⠀⢀⣀⣀⡀⠀⣸⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⢸⠃⠀⠰⠆⣿⡞⠉⠀⠀⠉⠲⡏⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠈⢧⡀⣀⡴⠛⡇⠀⠈⠃⠀⠀⡗⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⣱⠃⡴⠙⠢⠤⣀⠤⡾⠁⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⢀⡇⣇⡼⠁⠀⠀⠀⠀⢰⠃⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⣸⢠⣉⣀⡴⠙⠀⠀⠀⣼⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⡏⠀⠈⠁⠀⠀⠀⠀⢀⡇⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⢸⠃⠀⠀⠀⠀⠀⠀⠀⡼⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⢸⠀⠀⠀⠀⠀⠀⠀⣰⠃⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⣀⠤⠚⣶⡀⢠⠄⡰⠃⣠⣇⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⢀⣠⠔⣋⣷⣠⡞⠀⠉⠙⠛⠋⢩⡀⠈⠳⣄⠀⠀⠀⠀⠀⠀⠀
⠀⡏⢴⠋⠁⠀⣸⠁⠀⠀⠀⠀⠀ ⠀⣹⢦⣶⡛⠳⣄⠀⠀⠀⠀⠀
⠀⠙⣌⠳⣄⠀⡇   不能   ⡏⠀⠀  ⠈⠳⡌⣦⠀⠀⠀⠀
⠀⠀⠈⢳⣈⣻⡇   白嫖 ⢰⣇⣀⡠⠴⢊⡡⠋⠀⠀⠀⠀
⠀⠀⠀⠀⠳⢿⡇⠀⠀⠀⠀⠀⠀⢸⣻⣶⡶⠊⠁⠀⠀
⠀⠀⠀⠀⠀⢠⠟⠙⠓⠒⠒⠒⠒⢾⡛⠋⠁⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⣠⠏⠀⣸⠏⠉⠉⠳⣄⠀⠙⢆⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⡰⠃⠀⡴⠃⠀⠀⠀⠀⠈⢦⡀⠈⠳⡄⠀⠀⠀⠀⠀⠀⠀
⠀⠀⣸⠳⣤⠎⠀⠀⠀⠀⠀⠀⠀⠀⠙⢄⡤⢯⡀⠀⠀⠀⠀⠀⠀
⠀⠐⡇⠸⡅⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠹⡆⢳⠀⠀⠀⠀⠀⠀
⠀⠀⠹⡄⠹⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣇⠸⡆⠀⠀⠀⠀⠀
⠀⠀⠀⠹⡄⢳⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢹⡀⣧⠀⠀⠀⠀⠀
⠀⠀⠀⠀⢹⡤⠳⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣷⠚⣆⠀⠀⠀⠀
⠀⠀⠀⡠⠊⠉⠉⢹⡀⠀⠀⠀⠀⠀⠀⠀⠀⢸⡎⠉⠀⠙⢦⡀⠀
⠀⠀⠾⠤⠤⠶⠒⠊⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠙⠒⠲⠤⠽   

提示:以下是本篇文章正文内容

MongoDB简介

MongoDB是由C++语言编写的,是一个介于 关系数据库非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。 它支持的 数据结构 非常松散,是类似 json 的 bson 格式,因此可以存储比较复杂的 数据类型 。MongoDB用起来快速上手&集群和安全系列。

⭐MongoDB使用功能

📕 分页列表查询

代码演示

说明 :可以使用limit()方法来读取指定数量的数据,使用skip()方法来跳过指定数量的数据。
db.Collection.find().limit(n).skip((n-1)*n)如果你想返回指定条数的记录,可以在find方法后调用limit来返回结果(TopN)
db.Collection.find().limit(3)skip方法同样接受一个数字参数作为跳过的记录条数。(前N个不要),默认值是0
db.Collection.find().skip(3)提示 skip(), limilt(), sort()三个放在一起执行的时候,执行的顺序是先 sort(), 然后是 skip(),最后是显示的 limit(),和命令编写顺序无关。

⭐索引 ~ Index

  • 说明 : 索引支持在MongoDB中高效地执行查询。如果没有索引,MongoDB必须执行全集合扫描,即扫描集合中的每个文档,以选择与查询语句匹配的文档。这种扫描全集合的查询效率是非常低的,特别在处理大量的数据时,查询可以要花费几十秒甚至几分钟,这对网站的性能是非常致命的。

  • 如果查询存在适当的索引,MongoDB可以使用该索引限制必须检查的文档数。

  • 索引是特殊的数据结构,它以易于遍历的形式存储集合数据集的一小部分。索引存储特定字段或一组字段的值,按字段值排序。索引项的排序支持有效的相等匹配和基于范围的查询操作。此外MongoDB还可以使用索引中的排序返回排序结果。

  • 索引链接 : https://docs.mongodb.com/manual/indexes

  👉 索引的类型

  • 单字段索引
  1. MongoDB支持在文档的单个字段上创建用户定义的升序/降序索引,称为单字段索引(Single Field Index)。
  2. 对于单个字段索引和排序操作,索引键的排序顺序(即升序或降序)并不重要,因为MongoDB可以在任何方向上遍历索引。

图示

在这里插入图片描述

  • 复合索引
  1. MongoDB还支持多个字段的用户定义索引,即复合索引(Compound Index)。
  2. 复合索引中列出的字段顺序具有重要意义。例如,如果复合索引由 { userid: 1, score: -1 }组成,则索引首先按userid正序排序,然后在每个userid的值内,再在按score倒序排序。

图示
在这里插入图片描述

  👉 索引的管理操作

  • 索引的查看

    1. 说明:返回一个集合中的所有索引的数组。
    2. 语法:db.collection.getIndexes() *MongoDB 3.0+
    3. 默认_id索引 : MongoDB在创建集合的过程中,在 _id字段上创建一个唯一的索引,默认名字为 id,该索引可防止客户端插入两个具有相同值的文档,您不能在_id字段上删除此索引。
    4. 注意:该索引是唯一索引,因此值不能重复,即 _id值不能重复的。在分片集群中,通常使用 _id作为片键。
  • 索引的创建

    1. 说明:在集合上创建索引。
    2. 语法:db.collection.createIndex(keys, options)
    3. 提示:3.0.0 版本前创建索引方法为 db.collection.ensureIndex() ,之后的版本使用了 db.collection.createIndex() 方法,ensureIndex() 还能用,但只是 createIndex() 的别名。
    4. 参数
ParameterTypeDescription
keysdocument包含字段和值对的文档,其中字段是索引键,值描述该字段的索引类型。对于字段上的升序索引,请指定值1;对于降序索引,请指定值 - 1。比如: { 字段: 1或 - 1 } ,其中1 为指定按升序创建索引,如果你想按降序来创建索引指定为 - 1 即可。另外,MongoDB支持几种不同的索引类型,包括文本、地理空间和哈希索引。
optionsdocument可选。包含一组控制索引创建的选项的文档。有关详细信息,请参见选项详情列表。
  1. 代码演示
单字段索引示例:对 userid 字段建立索引
db.collection.createIndex({userid:1})复合索引 对 userid 和 nickname 同时建立复合(Compound)索引
db.collection.createIndex({userid:1,nickname:-1})db.collection.getIndexes()
  • 索引的移除

说明:可以移除指定的索引,或移除所有索引

  1. 指定索引的移除

    1、语法 :db.collection.dropIndex(index)
    2、参数 : 指定要删除的索引。可以通过索引名称或索引规范文档指定索引。若要删除文本索引,请指定索引名称。

  2. 所有索引的移除

    1、语法 :db.collection.dropIndexes()
    2、参数 : 指定要删除的索引。可以通过索引名称或索引规范文档指定索引。若要删除文本索引,请指定索引名称。

  👉 索引的使用

说明:分析查询性能(Analyze Query Performance)通常使用执行计划(解释计划、Explain Plan)来查看查询的情况,如查询耗费的时间、是否基于索引查询等。

  • 语法

db.collection.find(query,options).explain(options)

  • 使用过程 演示 ↓
db.createCollection("InDetail")
db.InDetail.insert({name:"小红",age:18,sex:"女",hobby:"喜欢运运动"})
db.InDetail.createIndex({userID:5})
db.InDetail.find({userID:5}).explain()

结果 ↓

在这里插入图片描述

  • 关键看 “stage” 属性

    1. 属性为"COLLSCAN", 表示全集合扫描
    2. 属性为"FETCH", 表示索引扫描

  👉 涵盖的查询用

说明 : 当查询条件和查询的投影仅包含索引字段时,MongoDB直接从索引返回结果,而不扫描任何文档或将文档带入内存。 这些覆盖的查询可以
非常有效。

官方链接 : https://docs.mongodb.com/

图解

在这里插入图片描述

  • 使用过程 演示 ↓
db.createCollection("InDetail")
db.InDetail.insert({userID:5,name:"小红",age:18,sex:"女",hobby:"喜欢运运动"})
db.InDetail.find({userID:5},{userID:1,_id:0}) → { "userID" : 5 }
db.InDetail.find({userID:5},{userID:1,_id:0}).explain()

结果 ↓

在这里插入图片描述

总结

以上是个人学习Mongodb的相关知识点,一点一滴的记录了下来,有问题请评论区指正,共同进步,这才是我写文章的原因之,如果这篇文章对您有帮助请三连支持一波👍

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

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

相关文章

JAVA 初识序列化与反序列化

JAVA 初识序列化与反序列化 目录 JAVA 初识序列化与反序列化初识序列化与反序列化1 概述2 特点/应用场景3 涉及到的流对象4 代码实现序列化与反序列化4.1 步骤1:创建学生类Student4.2 步骤2:创建序列化测试类 5 测试报错NotSerializableException:6 测试…

leetcode 26.删除有序数组中的重复项

⭐️ 题目描述 🌟 leetcode链接:删除有序数组中的重复项 代码: /*思路:双指针问题[1,1,2]src-> [ 1 , 1 , 2 ]destnums[src] nums[dest] > src;src-> [ 1 , 1 , 2 ]destnums[src]…

计算机视觉:多相机硬件同步拍摄

计算机视觉:多相机硬件同步拍摄 传感器同步硬件同步信号FSYNC信号STROBE信号 硬件接线硬件设备接线步骤: 软件驱动参考文献 传感器同步 目前主要有两种方法来同步不同传感器的信息(帧、IMU数据包、ToF等): 硬件同步&…

7.用python写网络爬虫,验证码处理

前言 验证码(CAPTCHA)的全称为全自动区分计算机和人类的公开图灵测试(Completely Automated Public Turing testtotellComputersand Humans Apart)从其全称可以看出,验证码用 于测试用户是否为真实人类。一个典型的验证…

基于Web的小学学科数字教学资源管理系统

摘要 小学学科数字教学资源管理是一个典型的学习项目,从教学资源、教材信息的统计和分析,在过程中会产生大量的、各种各样的数据。本文以小学学科数字教学资源管理系统为目标,采用B/S模式,以Springboot为开发框架,java…

STM32单片机(五)第二节:EXTI外部中断练习2(旋转编码器计次)

❤️ 专栏简介:本专栏记录了从零学习单片机的过程,其中包括51单片机和STM32单片机两部分;建议先学习51单片机,其是STM32等高级单片机的基础;这样再学习STM32时才能融会贯通。 ☀️ 专栏适用人群 :适用于想要…

Git常用命令

个人学习笔记,记录已经使用过的相关命名 1. 分支管理 2. 回退提交 2.1. 相关命令 2.2. 应用 回退后可以通过git log查看当前处于哪一版本 2.3. 撤销回退 先使用git reflog,找到需要回退的版本号,例如这里撤销回退之前提交测试文件的版本…

计算机网络的89个核心概念

主机:计算机网络上任何一种能够连接网络的设备都被称为主机或者说端系统,比如手机、平板电脑、电视、游戏机、汽车等,随着 5G 的到来,将会有越来越多的终端设备接入网络。 通信链路:通信链路是由物理链路(…

App 抓包提示网络异常怎么破?

背景 当你测试App的时候,想要通过Fiddler/Charles等工具抓包看下https请求的数据情况,发现大部分的App都提示网络异常/无数据等等信息。以“贝壳找房”为例: Fiddler中看到的请求是这样的: 你可能开始找证书的问题:是…

微信小程序canvas层级太高,与其他非原生组件层级冲突

官网已经提出新版本以支持同层渲染,但是实际项目中层级还是冲突的。 最后在文档中找到这样一段话,用真机打开,层级就正常了 。所以建议大家,多使用真机调试去测试!!!!

中介者模式(二十一)

相信自己,请一定要相信自己 上一章简单介绍了观察者模式(二十), 如果没有看过, 请观看上一章 一. 中介者模式 引用 菜鸟教程里面中介者模式介绍: https://www.runoob.com/design-pattern/mediator-pattern.html 中介者模式(Mediator Pattern&#xff…

rabbitmq安装步骤和遇到的问题

一、安装准备工具 1.下载Eralng,下面链接已提供otp_win64_20.2.exe 链接: https://pan.baidu.com/s/1lmvCMPVAV1Ba9UogCdQpZg 提取码:x9m7 2.下载rabbitmq,下面链接已提供rabbitmq-server-3.7.4.exe 链接: https:…