mongodb的地理空间索引常见的问题
创建地理空间索引注意事项
创建地理空间索引失败,提示错误信息如下
> db.places.ensureIndex({"loc":"2dsphere"})
{
"createdCollectionAutomatically" : false,
"numIndexesBefore" : 1,
"ok" : 0,
"errmsg" : "Can't extract geo keys from object, malformed geometry?: { _
id: ObjectId('5428bb224f26d9aa1af3d844'), name: \"Hudson River\", loc: { type: \
"Line\", coordinates: [ [ 0.0, 1.0 ], [ 0.0, 2.0 ], [ 1.0, 2.0 ] ] } }",
"code" : 16755
}
原因是多边形的点至少是4个才能创建成功
mongodb版本:mongodb-2.6。
> db.world.insert( { "name":"New England", "loc":{ "type":"Polygon", "
coordinates":[[0,1],[0,2],[1,2]] } } )这里只有3个点, 最外侧应该有两个[和]
> db.world.insert({"name":"New England", "loc":{ "type":"Polygon", "
coordinates":[[[0,1],[0,2],[1,2],[0,1]]]}})这里有4个。
创建成功提示信息如下:
> db.places.ensureIndex({"loc":"2dsphere"})
{
"createdCollectionAutomatically" : false,
"numIndexesBefore" : 1,
"numIndexesAfter" : 2,
"ok" : 1
}
这种错误一般都是json格式和内容不正确。
错误信息如下
"$err" : "Can't canonicalize query: BadValue bad geo query"
原因是type=Polygon类型,表示是多边形,至少需要有4个点(起点和终点必须一样),并且多边形有多个环组成,所以应该是数组结构,每个数组是一个多边形。
正确的格式如下:
db.places.insert({"name":"New England","loc":{"type":"Polygon","coordinates":[[[0,1],[0,2],[1,2],[0,1]]]}})
var eastVillage={"type":"Polygon","coordinates":[[-73.9917900,40.7264100],[-73.9917900,40.7321400],[-73.9829300,40.7321400],[-73.9917900,40.7264100]]}
参考文档如下:
http://stackoverflow.com/questions/25893415/mongodbcant-canonicalize-query-badvalue-bad-geo-query
http://geojson.org/geojson-spec.html#id4
mongodb的地理空间索引常见的问题的更多相关文章
- mongodb的地理空间索引如何在solr中体现
"$near"是唯一一个会对查询结果进行自动排序的地理空间操作符 "$near"的返回结果是按照距离由近及远排序的.其他排序条件不会生效. 这种按照地理位置远近 ...
- MongoDB系列五(地理空间索引与查询).
一.经纬度表示方式 MongoDB 中对经纬度的存储有着自己的一套规范(主要是为了可以在该字段上建立地理空间索引).包括两种方式,分别是 Legacy Coordinate Pairs (这个词实在不 ...
- 玩转mongodb(七):索引,速度的引领(全文索引、地理空间索引)
本篇博文主要介绍MongoDB中一些常用的特殊索引类型,主要包括: 用于简单字符串搜索的全文本索引: 用于球体空间(2dsphere)和二维平面(2d)的地理空间索引. 一.全文索引 MongoDB有 ...
- MongoDB小结26 - 地理空间索引
现在有一种查询变得越来越流行(尤其是移动设备):找到离当前位置最近的N个场所. MongoDB专为平面坐标查询做了专门的索引,称为地理空间索引. 同样需要用ensureIndex创建,不过,参数是两个 ...
- MongoDB 学习笔记之 地理空间索引入门
地理空间索引: 地理空间索引,可用于处理基于地理位置的查询. Point:用于指定所在的具体位置,我们以restaurants为例: db.restaurants.insert({name: &quo ...
- Mongodb地理空间索引
1.索引: 建立索引既耗时也费力,还需要消耗很多资源.使用{"bakckground":true}选项可以使这个过程在后台完成,同时正常处理请求.如果不包括background 这 ...
- 全文索引&&地理空间索引
Ⅰ.全文索引 搜索引擎的实现核心技术,搜索类似where col like '%xxx%';关键字可以出现再某个列任何位置 这种查询条件,B+ tree索引是无法使用的.如果col上创建了索引,因为排 ...
- MongoDB-JAVA-Driver 3.2版本常用代码全整理(4) - 地理空间索引
MongoDB的3.x版本Java驱动相对2.x做了全新的设计,类库和使用方法上有很大区别.例如用Document替换BasicDBObject.通过Builders类构建Bson替代直接输入$命令等 ...
- 利用Mongodb做地理空间查询
MongoDB 是一个基于分布式文件存储的数据库.由C++语言编写.旨在为WEB应用提供可扩展的高性能数据存储解决方案. 前言 在移动开发中,经常会用到定位的功能,例如美团.饿了么.猫眼电影等的app ...
随机推荐
- 10个重要的Linux ps命令实战
Linux作为Unix的衍生操作系统,Linux内建有查看当前进程的工具ps.这个工具能在命令行中使用. PS 命令是什么 查看它的man手册可以看到,ps命令能够给出当前系统中进程的快照.它能捕获系 ...
- sublime text3 下搭建python IDE环境 --Anaconda插件篇
近来在园区发现大家使用ST3(Sublime text 3)工具进行python学习.然后自己也跟风了一把. 1.ST3下载地址: http://www.sublimetext.com/3 2.安装S ...
- Net Core 项目实战之权限管理系统(0)
0 前言 Net Core 项目实战之权限管理系统(0) 无中生有 0 http://www.cnblogs.com/fonour/p/5848933.html 学习的最好方法就是动手去做,这里以 ...
- Java基础学习第一天
================每日必读==================== 写代码: 1.明确需求.我需要实现什么需求? 2.分析思路.我需要怎么实现需求? 3.确定步骤.我的每一部分思路需要使 ...
- 一起学习iOS开发专用词汇,每天记3个,助你变大牛-b
大家做开发最大的问题是什么?英语的问题应该困扰很多的同学的地方,我们提倡科学学习开发中的常用词汇.我们不要求大家有特别好的听.说.写,只要能够记住,能够认识这些常用词汇你以后的开发也将游刃有余.我们的 ...
- spring mvc标准项目结构
src com.xxx.inews.dao com.xxx.inews.dao.impl com.xxx.inews.data.entity com.xxx.inews.data.vo com.xxx ...
- Matlab 数理统计
1.离散随机分布 超几何分布:M:产品总数;K:次品数;N:抽样数. hygepdf(X, M,K,N):计算超几何分布的密度. 例:hygepdf(1,10,1,3),执行结果为ans=0.3000 ...
- lua学习笔记之-语言基础
一.基本知识 1.第一个程序: print("hello lua"); 在交互模式下直接运行: > print("hello lua") hello lu ...
- QT 设置SizePolicy的例子(简单明了)
http://hi.baidu.com/cybertingred/item/e8eadaad0c7f62f615329be7 QPushButton *left = new QPushButton ...
- 开启和关闭wifi的代码段
1.需要申请的权限android.permission.ACCESS_WIFI_STATE android.permission.CHANGE_WIFI_STATE android.permissio ...