使用Mongo索引需要注意的几个点

1、正则表达式和取反运算符不适合建立索引

正则表达式:$regex

取反运算符:$ne ,$nin

2、backgroud建立索引速度缓慢

前台创建是会有阻塞,backgroud效率缓慢,实际情况实际分析

3、mongo支持存储数组,并可将数组设为索引

对于$in操作符,索引是有效的。

时间: 2024-08-10 08:27:25

使用Mongo索引需要注意的几个点的相关文章

mongo: 索引

索引创建 在学习索引之前,我们先看一下,如果没有添加索引时,我们用explain()函数,查看查询计划是什么样的. 发现使用的是BasicCursor,那么就代表我们没有索引,当我们查某一个数据的时候,就是从头到尾的扫一遍 索引提高查询速度,但是会降低写入和更改速度,权衡常用的查询字段,不必在太多列上建索引 a)      新增一条数据的同时,还会新增索引文件,所以会降低写入和更改速度,所以需要权衡字段,没必要添加太多的索引 2.在mongodb中,索引可以按字段升序(1)/降序(-1)来创建,

mongo索引

索引自动创建和手工创建 db.stu.drop(); db.stu.insert({"name":"张三","sex":"男","age":18,"score":70,"address":"河南"}); db.stu.insert({"name":"李四","sex":"女&qu

Mongo的一些心得

一.mongo-java-driver 项目中使用的是java原生mongo操作api,个人觉得,不是那么的方便,资料好像也比较少,只有官方文档可供使用 基础用法不再啰嗦,特别介绍下mongo的批量查询和批量插入. 之前看过一遍博客,http://blog.sina.com.cn/s/blog_56545fd301013zav.html 介绍说批量插入和普通插入一样,正巧工作需要,有大约3000w左右数据(1000w遗留数据需要剔除)需要迁移,那么我就进行了数据源库的批量查询和新库的普通插入 (

MongoDB数据模型和索引学习总结

MongoDB数据模型和索引学习总结 1. MongoDB数据模型: MongoDB数据存储结构: MongoDB针对文档(大文件採用GridFS协议)採用BSON(binary json,採用二进制编码)数据格式来存储和交换数据.Bson吸收了JSON schema-less的特点,存储结构松散,不须要像RDB(关系数据)那样事先定义数据存储的元数据结构.另外添加了多种数据类型的支持和优化,使读写更加高效. (1) BSON 支持的数据类型: Double.String.Object.Arra

mongo管理

mongo管理 安装 源安装(ubuntu) echo "deb http://repo.mongodb.org/apt/ubuntu "$(lsb_release -sc)"/mongodb-org/3.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.0.list apt-key adv --keyserver keyserver.ubuntu.com --recv 7F0CEB10 a

mongodb 内存分析

要想了解mongo的内存机制就要先了解linux系统的内存分析. 第一步:先看看linux的内存参数都是怎么说的              total       used       free     shared    buffers     cached Mem:         11912       9045       2866          0         90       3406 -/+ buffers/cache:       5549       6363  Swa

MongoDB查询优化

项目场景:Mongo在首次查询特慢,后面就好的.如果长时间不查询,下次开始的第一次又将非常慢,于是从链接当时多方面,排查最终发现还是mongo索引建的有问题. MongoDB在大批量数据查询时经常会遇到查询耗时长,通常情况采用建各种索引来优化. 首先第一步排查,可以在查询后使用.explain()来查看查询数据轨迹,便于分析每个分片的查询索引. db.Collection.find({}).explain() 查看索引,如果不位可以根据查询条件,新建索引. 1.查询索引 db.COLLECTIO

mongo分片丢失分片索引

mongo分片备份后删除分片并重建分片索引,结果常遇到以下情况: shard01上的集合创建了分片索引,而shard02上却没有创建分片索引,导致chunk只分布在shard01分片上. 具体报错信息: "errmsg" : "aborting migration, shard is missing 1 indexes and collection is not empty. Non-trivial index creation should be scheduled man

Mongo 后台加索引踩坑

背景,随着mongo数据量变大,查询效率变低,要对索引进行优化,所在公司对mongo依赖比较严重,而DBA并不对mongo的权限做控制,所以每个后端开发都有mongo的读写权限,通常每个人各自管理自己的模块的数据. 由于笔者所负责的模块数据增长较快,用户的关键业务数据都存在mongo里面,很快mongo里面的数据就积累到几百万,之前只有一个五个字段的联合索引,所以是时候作死了... 本着作死要有条不紊有依有据的原则,在测试数据库接近百万数据量的相同Collection里面进行了实操,阻塞方式加索