创建地理空间索引注意事项

创建地理空间索引失败,提示错误信息如下

> 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

最新文章

  1. 好玩的Handler
  2. 破壳漏洞利用payload—shellshock in the wild
  3. jQuery index()
  4. load mainaccount
  5. resin
  6. 关于谷歌浏览器 表单元素获取焦点后自动增加外边线的问题解决CSS代码
  7. SQL语句汇总(一)——数据库与表的操作以及创建约束
  8. Swift基础--手势识别(双击、捏、旋转、拖动、划动、长按)
  9. C#借助谷歌翻译实现翻译小工具(一)基本功能实现
  10. Objective-C 2.0的运行时编程
  11. Machine Learning for hackers读书笔记(一)使用R语言
  12. vim开发环境配置
  13. 一个Java程序员应该掌握的10项技能
  14. 蜗牛历险记(二) Web框架(上)
  15. 14周事情总结-机器人-大数据hadoop
  16. O-C相关-10-动态类型检查
  17. BZOJ 1725: [Usaco2006 Nov]Corn Fields牧场的安排
  18. 1217.1——OC准备
  19. cocos2d-x中使用tinyxml遇到的问题及解决
  20. Hibernate(二)之Hibernate-api详解

热门文章

  1. js中callee与caller的区别
  2. JS浮点数运算Bug
  3. [Apio2014]回文串
  4. 基于Redis的CAS服务端集群
  5. springboot工程读取配置文件application.yml的写法
  6. PHP之路——验证码实现
  7. HTML 表格、区块、其他常用控件
  8. Caffe Python特征抽取
  9. SpringMVC入门2-注解开发
  10. 多线程同步循环打印和Guarded suspension 模式