头歌平台-MongoDB 之滴滴、摩拜都在用的索引

news2025/8/13 13:15:01

第1关:了解并创建一个简单索引

 

> use test

switched to db test

> db.student.insert([{_id:1,name:"王小明",age:15,score:90},{_id:2,name:"周晓晓",age:18,score:86},{_id:3,name:"王敏",age:20,score:96},{_id:4,name:"李晓亮",age:15,score:74},{_id:5,name:"张青青",age:21,score:88}])

BulkWriteResult({

        "writeErrors" : [ ],

        "writeConcernErrors" : [ ],

        "nInserted" : 5,

        "nUpserted" : 0,

        "nMatched" : 0,

        "nModified" : 0,

        "nRemoved" : 0,

        "upserted" : [ ]

})

> db.student.createIndex({score:-1})

{

        "createdCollectionAutomatically" : false,

        "numIndexesBefore" : 1,

        "numIndexesAfter" : 2,

        "ok" : 1

}

第2关:常见索引的创建

编程要求

根据提示,在右侧命令行进行操作,在 test2 数据库中创建集合 article,内容如下:

_idtitletagsfollwers
1提升程序员工作效率的6个工具利器Alfred,幕布543
2我是如何从零开始学习前端的HTML,Html5,CSS1570
320个非常有用的JAVA程序片段Java,编程1920

集合创建完成后,按要求创建以下索引:

  • 用字段 follwers 和 title 创建复合升序索引;

  • 用字段 tags 创建多 key 降序索引;

  • _id创建哈希索引;

  • 用字段 title 和 tags 创建文本索引。

    > use test2

    switched to db test2

    > db.article.insert([

    {_id:1,title:"提升程序员工作效率的6个工具利器",tags:["Alfred","幕布"],follwers:543},

    {_id:2,title:"我是如何从零开始学习前端的",tags:["HTML","Html5","CSS"],follwers:1570},

    {_id:3,title:"20个非常有用的JAVA程序片段",tags:["Java","编程"],follwers:1920}])

    BulkWriteResult({

            "writeErrors" : [ ],

            "writeConcernErrors" : [ ],

            "nInserted" : 3,

            "nUpserted" : 0,

            "nMatched" : 0,

            "nModified" : 0,

            "nRemoved" : 0,

            "upserted" : [ ]

    })

    > db.article.createIndex({follwers:1,title:1})

    {

            "createdCollectionAutomatically" : false,

            "numIndexesBefore" : 1,

            "numIndexesAfter" : 2,

            "ok" : 1

    }

    > db.article.createIndex({tags:-1})

    {

            "createdCollectionAutomatically" : false,

            "numIndexesBefore" : 2,

            "numIndexesAfter" : 3,

            "ok" : 1

    }

    > db.article.createIndex({_id:'hashed'})

    {

            "createdCollectionAutomatically" : false,

            "numIndexesBefore" : 3,

            "numIndexesAfter" : 4,

            "ok" : 1

    }

    > db.article.createIndex({title:'text',tags:'text'})

    {

            "createdCollectionAutomatically" : false,

            "numIndexesBefore" : 4,

            "numIndexesAfter" : 5,

            "ok" : 1

    }

第3关:有趣的地理位置索引

编程要求

如图4所示,有6个人 A、B、C、D、E、F 的位置,请将这些位置信息插入到数据库 test3 的集合 people 中,并建立地理位置索引 personloc。

  • 查询 A 周围100~3000米有哪些人;

  • 查询 B 周围100~5000米有哪些人;

  • 查询 C 周围3000~8000米有哪些人;

  • 查询 D 周围3000~8000米有哪些人。

  • 请逐条插入以下信息和位置 GeoJson 数据:

     
  • {_id:1,name:'A',personloc:{type:'Point',coordinates:[116.403981,39.914935]}}
  • {_id:2,name:'B',personloc:{type:'Point',coordinates:[116.433733,39.909511]}}
  • {_id:3,name:'C',personloc:{type:'Point',coordinates:[116.488781,39.949901]}}
  • {_id:4,name:'D',personloc:{type:'Point',coordinates:[116.342609,39.948021]}}
  • {_id:5,name:'E',personloc:{type:'Point',coordinates:[116.328236,39.901098]}}
  • {_id:6,name:'F',personloc:{type:'Point',coordinates:[116.385728,39.871645]}}

echo "

db.people.insert({_id:1,name:'A',personloc:{type:'Point',coordinates:[116.403981,39.914935]}});

db.people.insert({_id:2,name:'B',personloc:{type:'Point',coordinates:[116.433733,39.909511]}});

db.people.insert({_id:3,name:'C',personloc:{type:'Point',coordinates:[116.488781,39.949901]}});

db.people.insert({_id:4,name:'D',personloc:{type:'Point',coordinates:[116.342609,39.948021]}});

db.people.insert({_id:5,name:'E',personloc:{type:'Point',coordinates:[116.328236,39.901098]}});

db.people.insert({_id:6,name:'F',personloc:{type:'Point',coordinates:[116.385728,39.871645]}});

db.people.createIndex({personloc:'2dsphere'});

db.runCommand({geoNear:'people',near:{type:'Point',coordinates:[116.403981,39.914935]},spherical:true,minDistance:100,maxDistance:3000});

db.runCommand({geoNear:'people',near:{type:'Point',coordinates:[116.433733,39.909511]},spherical:true,minDistance:100,maxDistance:5000});

db.runCommand({geoNear:'people',near:{type:'Point',coordinates:[116.488781,39.949901]},spherical:true,minDistance:3000,maxDistance:8000});

db.runCommand({geoNear:'people',near:{type:'Point',coordinates:[116.342609,39.948021]},spherical:true,minDistance:3000,maxDistance:8000});

"

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

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

相关文章

kudu集群数据节点(tserver)扩容(缩容)

背景: 4个数据节点有数据倾斜,rebalance后依旧如此,检查分片数量和分布情况也是均衡的。最后发现相同的分片在其中一个节点存储消耗的磁盘资源比其他节点要大很多,导致了这个节点磁盘消耗较快。于是决定更换节点的磁盘 操作计划如…

【freeRTOS】操作系统之一-任务调度

一. 任务调度 ​ FreeRTOS操作系统支持三种调度方式:抢占式调度,时间片调度和合作式调度。实际应用主要是抢占式调度和时间片调度,合作式调度用到的很少。 挂起/阻塞/就绪/运行 三种基本状态 进程在运行中不断地改变其运行状态。通常&…

智能网联汽车网络安全攻击与防御技术概述

作者 | 王博文 上海控安可信软件创新研究院研究员 来源 | 鉴源实验室 01 引言 在汽车电动化、网联化、智能化和共享化等新四化的发展趋势下,智能网联汽车(Intelligent Connected Vehicles,ICVs)已经是新时代的必然产物。在智能网…

【学习笔记】浅谈闵可夫斯基和

学这东西主要是 这道题 要用 233 定义:给定两个凸包AAA,BBB,定义C{ab∣a∈A,b∈B}C\{ab|a\in A,b\in B\}C{ab∣a∈A,b∈B} ,其中aaa,bbb均为坐标。 不好意思图是嫖的 首先我们感性认识一下。可以直接将一个凸包的顶点换成另一个凸包&#x…

实现登陆模块时Cookie,Session,Token的理解

目录引言一、简化版登陆(不保存登录状态)二、Session 登陆三、CookieSession 实现登录四、Token登陆引言 先思考问题: 1、如何实现登陆? (1)表单输入账号密码 (2)后台数据库验证 …

治愈系书单|林曦《只生欢喜不生愁》

《只生欢喜不生愁》是水墨画家林曦的艺术生活随笔集,谈艺术之道,论无用之美。      全书按主题分为六辑:“艺可通道”“观照世间”“得自在禅”“心安之所”“写给时间”“赤子之心”,文字轻盈、意境优雅。林曦以手艺人之道&a…

Java#13(String Builder介绍及其常用办法)

目录 一.String Builder 1.理解:可以将String Builder当作一个容器,创建之后的内容是可以变的 2.作用:可以提高字符串的操作效率 二. StringBuilder中的常用方法 1.public StringBuilder append (任意类型) 添加数据,并返回对象本身 2.public StringBuild…

Keysight是德科技e5063A网络分析仪-安泰测试

Keysight E5063A ENA 是一款经济适用的台式矢量网络分析仪,可用于测试简单的无源元器件,例如频率最高达到 18 GHz 的天线、滤波器、电缆或连接器。 作为业界闻名的 ENA 系列中的一员,它传承了一致的测量框架,以便提高效率和生产率…

大学生静态HTML鲜花网页设计作品 DIV布局网上鲜花介绍网页模板代码 DW花店网站制作成品 web网页制作与实现

🎉精彩专栏推荐 💭文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 💂 作者主页: 【主页——🚀获取更多优质源码】 🎓 web前端期末大作业: 【📚毕设项目精品实战案例 (10…

RabbitMQ初步到精通-第二章-RabbitMQ介绍

第二章 RabbitMQ介绍 1、RabbitMQ简介 RabbitMQ 是一个由 Erlang 语言开发的 AMQP 的开源实现。RabbitMQ最初起源于金融系统,用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。 rabbit- 兔子,兔子的特点是什么? 轻…

图解https读书笔记

7.确保Web安全的HTTPS 7.2 HTTP 加密 认证 完整性保护 HTTPS https http ssL(Secure socket layer)client: 使用servcer端的publickey对消息加密-----》server:收到消息,用privatekey进行解密参考:彻底搞懂HTTPS的加密原理_峰子2012的博…

VS+QT错误集合

主要是使用VSQT时遇到等一些问题,现在使用等是VS2015(专业版) QT5.13.1 这章主要解决遇到的无法解析等外部符号这类问题 1、LNK2001 无法解析的外部符号 "public: virtual struct QMetaObject const * __cdecl Process::metaObject…

【分析笔记】Linux 4.9 backlight 子系统分析

相关信息 内核版本:Linux version 4.9.56 驱动文件:lichee\linux-4.9\drivers\video\backlight\backlight.c 驱动作用 对上,面对应用层提供统一的设备节点入口同级,面对驱动层提供设备驱动加载卸载通知事件,以及背光…

闲人闲谈PS之三十二——业务工程预算和PS成本计划

惯例闲话:年底,又要开始忙了,今年这一年,收获还不错,至少规划了第三年实现的目标——工程行业彩虹图,在今年居然奇迹般的实现了,看样子闲人还是保守了。还是应验了那句话,只要标准化…

React插槽

在开发中,我们抽取了一个组件,但是为了让这个组件具备更强的通用性,我们不能将组件中的内容限制为固定的div、span等等这些元素。我们应该让使用者可以决定某一块区域到底存放什么内容。这里可以使用插槽。 而在React中,我们可以通…

Spring Cloud Circuit Breaker 使用示例

Spring Cloud Circuit Breaker 使用示例 作者: Grey 原文地址: 博客园:Spring Cloud Circuit Breaker 使用示例 CSDN:Spring Cloud Circuit Breaker 使用示例 说明 Spring Cloud Circuit breaker提供了一个跨越不同断路器实现…

留学Essay写作怎么注意具体结构?

留学生都知道Essay一般分为Introduction,Main Body和Conclusion这三个部分,Introduction说明了文章的整体内容,但本身并没有提出任何论点;Conclusion通常简要地概括了正文的要点,并建议进一步研究给出一些或结论性的想法&#xff…

Springboot实现ENC加密

目录1. 为什么要用ENC加密2. jasypt实现ENC加密1. 实现流程2. 说明1. 自定义加密秘钥1. 盐、前缀、后缀2. 自定义加密方案2. 部署方案1. 为什么要用ENC加密 以下是未经过加密的数据库配置,密码均是采用明文密码,很容易导致数据库泄露。 spring:datasou…

gitlab 简单优化 gitlab cpu高,内存高 gitlab 负载飙高

1.首先要说得是,优化不能解决根本问题,机器小水管,再优化还是不行。 我感觉4核8g应该可以,截图这机器是阿里云送的免费一个月 4核8g 内存,不知是不是送得问题,感觉也是hold不住。 负载逛逛升,8…

【springboot】19、数据库操作

文章目录基本说明默认数据源HikariDataSource切换数据源为Druid基本说明 这篇文章介绍如何在springboot的项目中进行数据库的连接,完成数据库操作。 默认数据源HikariDataSource HikariDataSource是springboot的默认数据源,性能十分优秀,我…