这是我的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
感谢您的任何建议。
答案 0 :(得分:0)
$ box运算符为地理空间$ geoWithin查询指定一个矩形。查询根据基于点的位置数据返回矩形范围内的文档。 $ box运算符根据网格坐标返回文档,不查询GeoJSON 形状。
如果您插入此文件......
db.Townships.insert(
{ "geometry" : [ -96.74084500000001, 36.99911500000002 ],
"type" : "Feature"
})
...您的查询会找到它(但没有索引支持)。