mongodb 2.4.9 $ geoWithin查询非常简单的数据集,返回没有结果。为什么?

时间:2014-02-28 20:43:03

标签: mongodb geospatial

这是我的mongodb shell的一个非常简单的$ geoWithin查询示例的输出。如您所见,我的集合中只有一个GeoJson Polygon,其每个坐标都在所描述的$框内。此外,GeoJson似乎有效,因为2dsphere索引是在没有错误的情况下创建的。

> db.Townships.find()
{ "_id" : ObjectId("5310f13c9f3a313af872530c"), "geometry" : { "type" : "Polygon",     "coordinates" : [ [ [ -96.74084500000001, 36.99911500000002 ], [ -96.74975600000002,  36.99916100000001 ], [ -96.74953099999998,     36.99916000000002 ], [ -96.74084500000001, 36.99911500000002 ] ] ] }, "type" : "Feature" }
> db.Townships.ensureIndex( { "geometry" : "2dsphere"})
> db.Townships.find( { "geometry" : { $geoWithin : { "$box" : [[-97, 36], [-96, 37]] } } } ).count()
0

感谢您的任何建议。

1 个答案:

答案 0 :(得分:0)

来自documentation

  

$ box运算符为地理空间$ geoWithin查询指定一个矩形。查询根据基于点的位置数据返回矩形范围内的文档。 $ box运算符根据网格坐标返回文档,不查询GeoJSON 形状。

如果您插入此文件......

db.Townships.insert(
{ "geometry" : [ -96.74084500000001, 36.99911500000002 ],
  "type" : "Feature" 
})

...您的查询会找到它(但没有索引支持)。