mongoDB 地理空间查询不起作用
mongoDB geospatial query doesn't works
我正在尝试提取多边形(规则或不规则)内的所有元素,但 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
进行查询,return 对我来说什么都没有
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
]
]
]
]
}
}
}
})
欢迎任何帮助或想法
这是正确答案,首先取消设置字段 coordinates_geojson.deviation_level
然后构建索引 db.collection.createIndex({"coordinates_geojson" : "2dsphere" })
。
谢谢@B.Fleming
我正在尝试提取多边形(规则或不规则)内的所有元素,但 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
进行查询,return 对我来说什么都没有
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
]
]
]
]
}
}
}
})
欢迎任何帮助或想法
这是正确答案,首先取消设置字段 coordinates_geojson.deviation_level
然后构建索引 db.collection.createIndex({"coordinates_geojson" : "2dsphere" })
。
谢谢@B.Fleming