mongodb 索引3
1.name属性
当新建立索引后,可以看到name的属性值,
当有新建索引是多个属性时,name之间就会用_隔开,且name值最多128的字节长度,当用多个属性值新建索引时,可以重新命名,
直接索引名后边加上name属性名称,删除时也可以直接使用name来删除索引。
2.db.tableName.ensureIndex({inserted Index},{unique:true/false})
新建该索引,指定唯一。
插入数据显示成功,当再次插入数据与之前插入的数据m n 相同时,报错。
3.稀疏性-----sparse
稀疏性举例:有一个m索引,新插入数据如果是n:1,那么m也会为这条数据创建索引,是null,当指定稀疏性后,m就不会为这条数据创建索引。
db.tableName.ensureIndex({inserted index},{sparse:true/false)}
mongdb默认的是不稀疏的,就是会为不存在的字段创造索引。
好处:不必为不存在的字段创造索引,减少占用,增大速度!
先介绍一个东西
{ field: { $exists: <boolean> } }
true 会查找m的数据 FALSE 查找不带m的数据
不能在稀疏索引上查找这个字段不存在的记录,强制指定索引.hint(索引名称)
强制指定索引后查找结果为空。
4.地理位置索引
分类:1.2D索引 存查平面上的点
2.2Dsphere索引 存查球面上得点
方式:1.查找距离某点一定距离内的点
2.查找包含在某区域内的点
5.2D索引
db.tableName.ensureIndex({w:2d})
使用经纬度表示位置【经度,纬度】
取值范围-180<经度<180 -90<纬度<90
插入的点要在范围,不然会发生不可预知的错误。
查询方式:1.$near 查询:查询据某点最近的点 结果是一百个(不管满不满足条件)
2.$geoWithin 查询,查询某个形状的点
不支持minDistance
形状的表示:
1.$box:矩形
{$box:[[<x1>,<y1>],<x2>,<y2>]]}表示 第一个是左边界,第二个右边界
2.圆形$center
{$center:[[<x1>,<y1>],r]}表示
3.多边形 $polygon
{$polygon:[[<x1>,<y1>],[<x2>,<y2>],[<x3>,<y3>]]}