mongoDB大数据——mongodb索引类型与使用

目录

1、_id索引:

2、单键索引:

3、多建索引:

4、复合索引:

5、过期索引:

6、全文索引:

7、地理位置索引:

(1)2D索引:

(2)2Dsphere索引:


 

1、_id索引:

是绝大多数集合默认建立的索引,对于每个插入的数据,MongoDB都会自动生成一条唯一的_id字段 。

2、单键索引:

单键索引是最普通的索引,与_id索引不同,单键索引不会自动创建。单键索引的值为一个单一的值,如字符串,数字或日期。

创建索引:

db.imooc_2.ensureIndex({x:1});

查看索引:

db.imooc_2.getIndexes();

3、多建索引:

多键索引与单键索引创建形式相同,区别在于字段的值。多键索引的值具有多个记录,如数组。而单键索引的值为一个单一的值,如字符串,数字或日期。

创建索引:

db.imooc_2.ensureIndex({x:1});

查看索引:

db.imooc_2.getIndexes();

4、复合索引:

查询多个条件时,建立复合索引。

创建索引:

db.imooc_2.ensureIndex({x:1,y:-1});

查看索引:

db.imooc_2.getIndexes();

5、过期索引:

在一段时间后会过期的索引,在索引过期后,相应的数据会被删除。适合存储在一段时间之后会失效的数据,比如用户的登录信息、存储的日志等。个人角色此索引不太常用。

创建索引:

#time索引30秒后失效

db.imooc_2.ensureIndex({time:1},{expireAfterSeconds:30});

查看索引:

db.imooc_2.getIndexes();

过期索引的限制:

存储在过期索引字段的值必须是指定的时间类型,必须是ISODate或者ISODate数组,不能使用时间戳,否则不能自动删除。例如db.imooc_2.insert({time:1}),这种是不能被自动删除的

如果指定了ISODate数组,则按照最小的时间进行删除。

过期索引不能是复合索引。因为不能指定两个过期时间。

删除时间是不精确的。删除过程是由MongoDB的后台进程每60s跑一次的,而且删除也需要一定时间,所以存在误差。

6、全文索引:

对字符串与字符串数组创建全文课搜索的索引,个人感觉不太好,如果需要使用全文检索可以将数据迁移到elasticsearch中,elasticsearch做全文检索性能非常好。

在mongodb中创建全文索引的语法就不写了,如果一定需要再自行了解吧。

7、地理位置索引:

将一些点的位置存储在MongoDB中,创建索引后,可以按照位置来查找其他点。这个类似地图中的功能:查找距离某个点一定距离内的点、查找包含在某区域内的点。此索引对于经纬度等位置数据处理非常有用。

地理位置索引分为两类:

2D索引,用于存储和查找平面上的点。

2Dsphere索引,用于存储和查找球面上的点。

(1)2D索引:

创建索引:db.collection.ensureIndex({w:”2d”});

2D地理位置索引经纬度取值范围:经度[-180,180]、纬度[-90,90]。

使用$near查询:

距离某个点最近的点 ,默认返回最近的100个点:

db.collection.find({w:{$near:[x,y]}});

可以使用$maxDistance:x 限制返回的最远距离:

db.collection.find({w:{$near:[x,y],$maxDistance:z}})

使用$geoWithin查询:

查询某个形状内的点,形状的表示方式:

$box 矩形,使用{$box:[[x1,y1],[x2,y2]]}

$center 圆形,使用 {$center:[[x,y],r]}

$polygon 多边形,使用 {$polygon:[[x1,y1],[x2,y2],[x3,y3]]}

查询矩形中的点

db.collection.find({w:{$geoWithin:{$box:[[0,0],[3,3]]}}})

查询圆中的点

db.collection.find({w:{$geoWithin:{$center:[[0,0],5]}}})

查询多边形中的点

db.collection.find({w:{$geoWithin:{$polygon:[[0,0],[0,1],[2,5],[6,1]]}}})

(2)2Dsphere索引:

创建索引:db.collection.ensureindex({key: '2dsphere'});

2Dsphere位置表示方式: GeoJSON,描述一个点,一条直线,多边形等形状。{type:'', coordinates:[list]};GeoJSON查询可支持多边形交叉点等,支持MaxDistance和MinDistance。

你可能感兴趣的:(mongodb,MongoDB大数据,mongodb)