Индексирование координат Меркатора с MongoDB
В MongoDB (версии 2.6 и 3.6) у меня есть коллекция, документы которой содержат объект геойсон с координатами WGS84. Этот элемент документа (назовите его "geometry") индексируется с помощью индекса 2dSphere. Все геопространственные запросы работают нормально.
У меня есть другие данные, которые уже находятся в проекции Меркатора. Когда я пытаюсь записать это в один и тот же элемент документа, я, очевидно, получаю сообщение об ошибке, потому что оно выходит за пределы 2dSphere для широты и долготы.
Поскольку я знаю, что они являются mercator, я поместил их в другой элемент документа (все еще в формате geojson), который называется "mercator". Так что теперь у меня есть документы, которые имеют либо ключ "геометрии" для обычного широты / долготы, проиндексированный 2dsphere, либо ключ "меркатора", который в настоящее время не индексируется.
Опять же, геопространственные запросы в поле "геометрия" работают нормально. Однако, если я попытаюсь выполнить их в поле 'mercator', оно выдаст ошибку "неправильный гео-запрос". Вот запрос:
{
"type": "RECORD-TYPE-THAT-HAS-MERCATOR-VALUES",
"mercator": {
"$geoIntersects": {
"$geometry": {
"type": "Polygon",
"coordinates": [
[
[
-6261721.3571216,
3757032.814273
],
[
-5009377.0856973,
3757032.814273
],
[
-5009377.0856973,
2504688.5428487
],
[
-6261721.3571216,
2504688.5428487
],
[
-6261721.3571216,
3757032.814273
]
]
]
}
}
}
}
Я вроде понимаю, почему я получаю ошибку, так как все гео-функции MongoDB предполагают wgs84.
Есть ли способ использовать какие-либо геопространственные возможности MongoDB (в частности, такие как $geoIntersects) в системах координат с кодировкой меркатора (или любой другой, не относящейся к wgs84)? Есть ли "лучшая практика" для, я полагаю, вы бы назвали их, регулярных запросов геометрии? Я бы предпочел не конвертировать обратно в wgs84, если мне не нужно.
Заранее спасибо.