Геопространственный запрос mongoDB не работает
Я пытаюсь извлечь все элементы внутри многоугольника (обычный или неправильный), но геопространственная 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
]
]
]
]
}
}
}
})
Любая помощь или идея приветствуется
1 ответ
Это правильный ответ, сначала сбросьте поле coordinates_geojson.deviation_level
а затем построить индекс db.collection.createIndex({"coordinates_geojson" : "2dsphere" })
,
Спасибо @ Б.Флеминг