MongoDB – 索引

栏目: 数据库 · 发布时间: 7年前

内容简介:索引的目的就是优化搜索。如:当查询中仅适用一个键时,可以对该键建立索引。

索引

索引的目的就是优化搜索。

如:

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)


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

硅谷之火

硅谷之火

保罗·弗赖伯格、迈克尔·斯韦因 / 张华伟 编译 / 中国华侨出版社 / 2014-11-1 / CNY 39.80

《硅谷之火:人与计算机的未来》以生动的故事,介绍了计算机爱好者以怎样的创新精神和不懈的努力,将计算机技术的力量包装在一个小巧玲珑的机壳里,实现了个人拥有计算机的梦想。同时以独特的视角讲述了苹果、微软、太阳微系统、网景、莲花以及甲骨文等公司的创业者们在实现个人计算机梦想的过程中创业的艰辛、守业的艰难、失败的痛苦,在激烈竞争的环境中奋斗的精神以及在技术上不断前进的历程。一起来看看 《硅谷之火》 这本书的介绍吧!

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

MD5 加密
MD5 加密

MD5 加密工具