Mongo基础 索引的使用
MongoDB中的索引和其他数据库索引类似,也是使用B-Tree结构。mongodb的索引是在collection级别上的,并且支持在任何列或者集合内的文档的子列中创建索引。
所有的MongoDB集合默认都有一个唯一索引在字段“_id”上,如果应用程序没有为 “_id”列定义一个值,MongoDB将创建一个带有ObjectId值的列。(ObjectId是基于 时间、计算机ID、进程ID、本地进程计数器 生成的)
MongoDB 同样支持在一列或多列上创建升序或降序索引。
MongoDB还可以创建 多键索引、数组索引、空间索引、text索引、哈希索引,其属性可以是唯一性索引、稀疏性索引、TTL(time to live)索引。
索引的限制:
索引名称不能超过128个字符
每个集合不能超过64个索引
复合索引不能超过31列
基本命令:
>db.tab.ensureIndex({"name":},{"name":"IX_name"},{"unique":true}) //创建索引名字叫IX_name的唯一索引
>db.tab.getIndexes() //查看所有索引
>db.tab.dropIndexes() //删除所有索引
>db.tab.find({"name":"test"}).explain("executionStats") //执行结果分析 关注输出的如下数值:explain.executionStats.executionTimeMillis 耗时毫秒
>db.tab.find({"name":"test"}).hint({"name":}).explain("executionStats") //执行结果分析 索引提示,强制使用索引
其他常用命令:
db.tab.ensureIndex({"id":}) //创建单列索引
db.collection.createIndex( { "filed": sort } ) //filed :为键列
db.collection.createIndex( { "filed": sort , "filed2": sort } ) //sort :为排序。1 为升序;-1为降序。
db.system.indexes.find() //查看索引
db.tab.totalIndexSize(); //查看索引大小
db.tab.reIndex() //重建索引
db.runCommand({reIndex:"tab"})
db.tab.dropIndex(<indexname>) //删除索引
db.tab.dropIndex("id_1") //<indexname>为getIndexes看到的索引名称
db.tab.dropIndexes() //删除所有索引(注意!)
参考资料:http://www.runoob.com/mongodb/mongodb-indexing.html
Mongo基础 索引的使用的更多相关文章
- MongoDB 创建基础索引、组合索引、唯一索引以及优化
一.索引 MongoDB 提供了多样性的索引支持,索引信息被保存在system.indexes 中,且默认总是为_id创建索引,它的索引使用基本和MySQL 等关系型数据库一样.其实可以这样说说,索引 ...
- (2.9)Mysql之SQL基础——索引的查看与删除
(2.9)Mysql之SQL基础——索引的查看与删除 关键词:mysql索引查看,mysql索引删除 1.索引查询(以下包括主键,唯一,普通,复合,全文,但不包括外键) (1)按库查询 select ...
- (2.8)Mysql之SQL基础——索引的分类与使用
(2.8)Mysql之SQL基础——索引的分类与使用 关键字:mysql索引,mysql增加索引,mysql修改索引,mysql删除索引 按逻辑分类: 1.主键索引(聚集索引)(也是唯一索引,不允许有 ...
- MYSQL:基础——索引原理及慢查询优化
MYSQL:基础——索引原理及慢查询优化 索引的数据结构 索引的数据结构是B+树.如下图所示,B+树的节点通常被表示为一组有序的数据项和子指针.图中第一个节点包含数据项3和5,包含三个指针,第一个指针 ...
- mongo基础---增删改查
正文 MongoDB 是一个基于分布式文件存储的数据库.由C++语言编写.旨在为WEB应用提供可扩展的高性能数据存储解决方案.MongoDB是一个介于关系型数据库和非关系数据库之间的产品,是非关系数据 ...
- Mongo基础使用,以及在Express项目中使用Mongoose
MongoDB的基本使用 MongoDB特点: 使用BSON存储数据 支持相对丰富的查询操作(相对其他nosql数据库) 支持索引 副本集(支持多个实例/多个服务器运行同个数据库) 分片(数据库水平扩 ...
- mongo ttl索引
db.log_events.find() # 查找log_events里的所有数据 db.log_events.create ...
- SQL基础--索引
索引的概念: 在数据库中索引是用于提升数据库查询操作性能的一种手段,但在频繁更新的表上,索引反而会降低性能. 常用的索引结构: B*树索引 位图索引 B树索引: B书索引是最基本的索引结构,Oracl ...
- .NET平台开发Mongo基础知识
NoSQL简介 NoSQL相关的技术最近越来越受欢迎,Mongo本身就是基于NoSQL实现的.关于NoSQL你需要了解 什么是NoSQL NoSQL和传统的关系型数据库有什么区别 NoSQL的优缺点 ...
随机推荐
- 课堂笔记及知识点----UI框架简介(2018/10/25)
UI框架学习目标: 要知道怎样套用的! 框架里面的基本执行流程 怎样开始执行(配置文件) 怎么套用 最主要的三个脚本: (也是多态的体现之一) 1).BaseUI: 作用-->提供UI能够使用的 ...
- ThinkPHP5 打开多语言支持
1.在thinkphp\start.php 页面中添加多语言的切换函数的参数格式,本贴目前只支持两种语言,并注意必须全部小写!全部小写!!全部小写!!!,注意这一步很关键 Lang::setAllow ...
- [编译] 5、在Linux下搭建安卓APP的开发烧写环境(makefile版)—— 在Linux上用命令行+VIM开发安卓APP
星期三, 19. 九月 2018 02:19上午 - BEAUTIFULZZZZ 0)前言 本文不讨论用IDE和文本编辑器开发的优劣,是基于以下两点考虑去尝试用命令行编译安卓APP的: 了解安卓APP ...
- 依赖注入[4]: 创建一个简易版的DI框架[上篇]
本系列文章旨在剖析.NET Core的依赖注入框架的实现原理,到目前为止我们通过三篇文章(<控制反转>.<基于IoC的设计模式>和< 依赖注入模式>)从纯理论的角度 ...
- Windows多线程中关键段(Critical Section)的应用
先看如下代码:(用Visual Studio 2010按照Win32 Console程序创建向导创建) #include "stdafx.h" #include <proce ...
- emWin智能家居主界面设计,含uCOS-III和FreeRTOS两个版本
第6期:智能家居主界面设计配套例子:V6-910_STemWin提高篇实验_智能家居主界面设计(uCOS-III)V6-911_STemWin提高篇实验_智能家居主界面设计(FreeRTOS) 例程下 ...
- Batch入门教程丨第二章:认识变量相关概念
在前两期的学习内容中,我们已经了解了Batch入门教程有关的知识和编程方法,如何编写和运行Windows Batch程序,脚本语言的入门方式等,今天我们将继续深入学习Batch入门教程之认识变量相关概 ...
- 为什么大一先要学C语言(面向过程)再学C++或JAVA(面向对象)?
面向对象和面向过程各有千秋 一.面向过程与面向对象对比 面向过程:强调的是每一个功能的步骤,有很多很多方法组成,这些方法相互调用,完成需求. 面向对象:强调的是对象,然后由对象去调用功能. 面向过程 ...
- 【Spark篇】---SparkStreaming+Kafka的两种模式receiver模式和Direct模式
一.前述 SparkStreamin是流式问题的解决的代表,一般结合kafka使用,所以本文着重讲解sparkStreaming+kafka两种模式. 二.具体 1.Receiver模式 原理图 ...
- Python内置函数(39)——locals
英文文档: locals() Update and return a dictionary representing the current local symbol table. Free var ...