内容简介:索引的目的就是优化搜索。如:当查询中仅适用一个键时,可以对该键建立索引。
索引
索引的目的就是优化搜索。
如:
db.foo.find({'name': 'yan'})
创建索引
当查询中仅适用一个键时,可以对该键建立索引。
db.foo.ensureIndex({'name': 1})
db.foo.find({'name': 'yan'}, {background: true})
唯一索引
唯一索引,该键不存在重复的值
db.foo.ensureIndex({'name': 1}, {'nuique': true})
创建唯一索引的同时,去重复
db.foo.ensureIndex({'name': 1}, {'nuique': true, dropDups: true})
==explain== 和 ==hint==
explain
会返回查询使用的索引情况(如果有索引的话)
如:
db.foo.find({name: 'jundong'}).explain()
hint
强制使用某个索引(多数情况下这种指定都没有必要)
db.foo.find({name: 'jundong'}).hint({'name': 1})
删除索引
删除指定索引
db.runCommand({dropIndexes: 'foo', index: 'name'})
删除所有索引
db.runCommand({dropIndexes: 'foo', index: '*'})
删除集合也会删除索引。删除集合的所有文档不影响索引
地理空间索引
找到离当前位置最近的N个场所。
db.map.ensureIndex({gps: '2d'})
gps
必须是某种形式的一对值。如
{gps: [0, 100]} {gps: {x: -30, y: 30}} {gps: {suiyi1: -180, suiyi2: 180}}
默认情况下,地理空间索引假设值得范围是 -180~180, 如果要用其它值,可以通过ensureIndex的选项来指定最大最小值
db.map.ensureIndex({gps: '2d'},{min: -1000, max: 1000})
查询的时候,与一般的查询差别不大,只不过需要用 ‘$near’
db.map.find({gps: {$near: [40, -73]}})
没有指定limit的值,默认是100个文档
db.map.find({gps: {$near: [40, -73]}})。limit(10)
也可以用geoNear完成相同操作,它还会返回每个文档到查询点的距离。
db.runCommand({geoNear: 'map', near: [40, -73], num: 10})
MongoDB不但能找到靠近一个点的文档,还能找到指定形状内的文档。……
复合地理空间索引
如:用户要找出周围所有的咖啡店。
创建索引:
db.map.ensureIndex({location: '2d', desc: 1})
搜索:
db.map.find({location: {$near: [-79, 30]}, desc: 'cooffeeshop'}).limit(10)
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- MySQL索引使用说明(单列索引和多列索引)
- Elasticsearch索引的基本操作(3)-索引的滚动索引
- Coreseek 增量索引模拟实时索引
- Coreseek 增量索引模拟实时索引
- MySQL高效索引之覆盖索引
- MySQL -- 普通索引与唯一索引
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。