①地理信息索引

地理信息索引分为两类:2D平面索引,另外就是2DSphere球面索引。在2D索引里面基本上能够保存的信息都是坐标,而且坐标保存的就是经纬度坐标。

范例:定义一个商铺的集合

db.shop.insert(lloc[10,10]);

db.shop.insert(lloc[10,11]);

db.shop.insert(lloc[11,10]);

db.shop.insert(lloc[12,15]);

db.shop.insert(lloc[16,17]);

db.shop.insert(lloc[90,90]);

db.shop.insert(lloc[120,130]);

②范例:为shop的集合定义2D索引

db.students.ensureIndex({"loc":"2d"});

这个时候shop集合就可以实现坐标位置的查询了,而要进行查询有两种查询方式:

·“$near”查询,查询距离某个点最近的坐标点;

·“$geoWithin”查询:查询某个形状内的点;

 
③范例:假设我的现在的坐标是:[11,11]
db.shop.find({loc:{"$near":[11,11]}});
但是如果执行了以上的查询,实际上会将数据集合里面的前100个点的信息都返回来了,可是太远了,设置一个距离范围—— 5个点内的。
④范例:设置查询距离范围
db.shop.find({loc:{"$near":[11,11]},"$maxDistance":5});

但是需要注意一点,在2D索引里面虽然支持最大距离,但是不支持最小距离。

但是也可以设置一个查询的范围,使用“$geoWithin”查询,而可以设置的范围:

·矩形范围($box):{"$box":[[x1,y1],[x2,y2]]};

·圆形范围($center):{"$center" : [[x1,y1],r]};

·多边型($polygon):{"$polygon" :[[x1,y1],[x2,y2][x3,y3] , ...]}

⑤范例:查询矩形
db.shop.find({loc:{"$geoWithin":{"$box":[9,9],[11,11]}}});
 
⑥范例:查询圆形
db.shop.find({loc:{"$geoWithin":{"$center":[11,11],2}}});
⑦范例:利用runCommand()实现信息查询
在MongoDB数据库里面,除了一些支持的操作函数之外,还有一个重要的命令:runCommand(),这个函数可以执行所有的特定的MongoDB命令。
db.runCommand({"geoNear":"shop",near:[10,10],maxDistance:5,num:2});
 
 
 
 
 
 
 
 
 
 
 
 
 

第30章:MongoDB-索引--地理信息索引的更多相关文章

  1. MongoDB(课时25 地理信息索引)

    3.6.4 地理信息索引 地理信息索引分为两类:2D平面索引,2DSphere球面索引.在2D索引里面基本上能够保存的信息都是坐标,而且坐标保存的就是经纬度坐标. 范例:定义一个shop的集合 db. ...

  2. MongoDB 学习五:索引

    这章我们介绍MongoDB的索引,用来优化查询. 索引介绍 数据库索引有些类似书的目录. 一个查询如果没有使用索引被称为表扫描,意思是它必须像阅读整本书那样去获取一个查询结果.一般来说,我们应尽量避免 ...

  3. MongoDB学习笔记~索引提高查询效率

    回到目录 索引这个东西大家不会陌生,只要接触到稍微大一点的数据,都会用到这东西,它可以提升查询的速度,相当代价就是占用了更多的存储空间,这也是正常的,符合“能量守恒定理”,哈哈!今天说的是MongoD ...

  4. MongoDB学习笔记(索引)

    一.索引基础:    MongoDB的索引几乎与传统的关系型数据库一模一样,这其中也包括一些基本的优化技巧.下面是创建索引的命令:    > db.test.ensureIndex({" ...

  5. MongoDB的学习--索引类型和属性

    索引类型 MongDB的索引分为以下几种类型:单键索引.复合索引.多键索引.地理空间索引.全文本索引和哈希索引 单键索引(Single Field Indexes) 在一个键上创建的索引就是单键索引, ...

  6. MongoDB的学习--索引

    索引可以用来优化查询,而且在某些特定类型的查询中,索引是必不可少的.为集合选择合适的索引是提高性能的关键. 先来mock数据 for (i = 0; i < 1000000; i++) { db ...

  7. MongoDB学习笔记(索引)(转)

    一.索引基础:    MongoDB的索引几乎与传统的关系型数据库一模一样,这其中也包括一些基本的优化技巧.下面是创建索引的命令:    > db.test.ensureIndex({" ...

  8. MongoDB学习笔记——索引管理

    索引 索引能够提升查询的效率.没有索引,MongoDB必须扫描集合中的所有文档,才能找到匹配查询语句的文档. 索引是一种特殊的数据结构,将一小块数据集保存为容易遍历的形式.索引能够存储某种特殊字段或字 ...

  9. mongodb的地理位置索引

    mongoDB支持二维空间索引,使用空间索引,mongoDB支持一种特殊查询,如某地图网站上可以查找离你最近的咖啡厅,银行等信息.这个使用mongoDB的空间索引结合特殊的查询方法很容易实现.前提条件 ...

随机推荐

  1. js五种继承优缺点

    //1.原型继承 //缺点: 当父级的属性有引用类型的时候,任意一个实例修改了这个属性,其他实例都会受影响 // 1)基本类型:Number Boolean String undefined null ...

  2. java 基础之--nio 网络编程

    在传统的Java 网络编程中,对于客户端的每次连接,对于服务器来说,都要创建一个新的线程与客户端进行通讯,这种频繁的线程的创建,对于服务器来说,是一种巨大的损耗,在Java 1.4 引入Java ni ...

  3. Oracle_SQL(4) DDL 表和约束

    数据库对象分为占存储空间的对象和不占存储存储空间的对象.占存储空间的对象主要包括:表.索引等.select distinct segment_type from dba_segments order ...

  4. GitHub上Markdown语法的高级应用

    高级语法格式 本篇的内容来源于Github使用高级格式写作.如果在观看时有什么问题,可以直接查阅源文件.另外需要说明的是Git对Markdown的支持增加了一些扩展功能,因此在Git上可以渲染的Mar ...

  5. hdu (欧拉函数+容斥原理) GCD

    题目链接http://acm.hdu.edu.cn/showproblem.php?pid=1695 看了别人的方法才会做 参考博客http://blog.csdn.net/shiren_Bod/ar ...

  6. Android.StructureOfAndroidSourceCodeRootTree

    Refference 1. How to understand the directory structure of android root tree? http://stackoverflow.c ...

  7. java.lang.NoClassDefFoundError: org/apache/ibatis/cursor/Cursor

    因为mybatis的版本和mybatis-spring的版本不兼容导致的,解决方法:mybatis的3.4.0及以上版本用mybatis-spring1.3.0及以上版本:mybatis的3.4.0以 ...

  8. RNA Sequencing

    RNA Sequencing 选择其他单元: RNA Sequencing 国内领先的转录组定序基地 Transcriptome Sequencing可全面性并快速地获得某一物种特定细胞或组织在某一状 ...

  9. 判断and ,or

    and 和 or 是条件 与和或,记住一条,and 是两边同时都满足,or  是只有满足一个条件就成立. # print(1 or False) #条件1成立,条件2不成立.打印条件1 #返回: 1# ...

  10. Java中 i++ 是线程安全的么?为什么?

    问题 在 int i = 0; i = i++; 语句中,i = i++是线程安全的么?如果不安全,请说明上面操作在JVM中的执行过程,为什么不安全?说出JDK中哪个类能达到以上的效果,并且是线程安全 ...