2016-06-07 44 views
5

使用MongoDB 3.2我试图对点的集合使用2dsphere查询。

可以说我有一个集合cust_5_abcd与2dsphere指数the_geom场。

集合中添加一个几何:

db.cust_5_abcd.insert({ 
"chps0" : "Texte d'une ligne", 
"the_geom" : { 
    "type" : "Point", 
    "coordinates" : [ 
     1.032715, 
     40.380028 
    ] 
}}) 

现在我想查询使用$ geoWithin获取特定的多边形内部的所有数据这一点。这是我得到不同的结果,如果我使用$几何与GeoJSON定义,或与$多边形和严格的坐标。也许文件中的某些内容丢失或者我误解了。

随着$几何没有给出结果:

db.cust_5_abcd.find( { the_geom: 
{ $geoWithin: 
     { $geometry: 
      {  
       "type": "Polygon", 
       "coordinates": [ 
        [ 
         [ -16.237793, 40.162083 ], 
         [ -16.237793, 51.835778 ], 
         [ -13.776855, 51.835778 ], 
         [ -13.776855, 41.426253 ], 
         [ 14.765625, 41.426253 ], 
         [ 14.765625, 40.162083 ], 
         [ -16.237793, 40.162083 ] 
       ] 
       ] 
      } 
     } 
    } 
}) 

随着$多边形返回我的观点:

db.cust_5_abcd.find({ the_geom: 
{ $geoWithin: 
     { $polygon: 
        [ 
         [ -16.237793, 40.162083 ], 
         [ -16.237793, 51.835778 ], 
         [ -13.776855, 51.835778 ], 
         [ -13.776855, 41.426253 ], 
         [ 14.765625, 41.426253 ], 
         [ 14.765625, 40.162083 ], 
         [ -16.237793, 40.162083 ] 
       ]     
     } 
    } 
}) 
+0

这有点奇怪,特别是query.explain(“executionStats”)显示第一个查询使用索引(如果已创建),另一个不是... – profesor79

回答

0

得到了MongoDB的人的答案:https://jira.mongodb.org/browse/SERVER-24549?focusedCommentId=1293398&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-1293398

使用$时多边形会计算平面几何图形,并且该点落在您描述的多边形内。但是,当你使用一个GeoJSON的球面几何学被使用,并且点落在几何

外面现在的问题是,我无法使用$多边形上$ geoIntersect用于为例或与其他几何形状,然后多边形。

相关问题