我正在尝试提取多边形(规则或不规则)内的所有元素,但是mongoDB地理空间不起作用。
当我执行这样的查询时,效果很好
db.getCollection('houses').find({
'coordinates_geojson.coordinates.1': {
'$lte': 20.49584842128357,
'$gte': 20.458539491985142
},
'coordinates_geojson.coordinates.0': {
'$lte': -103.4088134765625,
'$gte': -103.47747802734375
}
})
但是如果尝试使用geoWithin
进行查询,不会返回任何内容
db.getCollection('houses').find({
"coordinates_geojson": {
"$geoWithin": {
"$geometry": {
"type": "MultiPolygon",
"coordinates": [
[
[
[
-103.47747802734375,
20.458539491985142
],
[
-103.4088134765625,
20.458539491985142
],
[
-103.4088134765625,
20.49584842128357
],
[
-103.47747802734375,
20.49584842128357
],
[
-103.47747802734375,
20.458539491985142
]
]
]
]
}
}
}
})
欢迎任何帮助或想法
答案 0 :(得分:0)
那是正确的答案,首先取消设置字段coordinates_geojson.deviation_level
,然后建立索引db.collection.createIndex({"coordinates_geojson" : "2dsphere" })
。
谢谢@ B.Fleming