С введением 2.3 >
MongoDB стал еще более полезен при обработке данных и обработке запросов. MongoDB хранит документы как BSON, поэтому каждый документ имеет все поля документа, что, очевидно, потенциально приводит к большим базам данных, чем наши обычные RMDBS.
Я использовал для хранения полилиний и полигонов в виде ряда индексированных точек с дополнительным полем, представляющим порядок каждой строки (я делал это, чтобы обеспечить согласованность, поскольку я использую JavaScript, поэтому точки не всегда сохранялись в их правильных заказ). Это было примерно так:
polyline: {
[
point: [0,0],
order: 0
],
[
point: [0,1],
order: 1
]
}
В то время как теперь я использую:
polyline: {
type: 'LineString',
coordinates: [
[0,0],
[1,0]
]
}
Я видел улучшение размера документов, так как некоторые полилинии могут иметь до 500 точек.
Однако мне интересно, какие преимущества могут хранить все мои данные Point
как GeoJSON
. Меня обескураживает увеличение размера документа, например:
loc: [1,0]
лучше, чем
loc: {
type: 'Point',
coordinates: [0,1]
}
и, следовательно, будет легче работать с.
Мой вопрос:
Лучше/рекомендуется хранить точки как объекты GeoJSON
в отличие от массива с двумя точками?
Я рассмотрел следующее:
- Ограничения по размеру: я могу потенциально иметь миллионы документов с местоположением, что может повлиять на размер коллекции и, возможно, на карман.
- Согласованность. Было бы лучше иметь дело с каждым набором координат в формате
lng, lat
, а не с привязкой кlat, lng
для точек, а первая для всех моих других функций местоположения. - Удобство: если я возьму точку и использую с ней
$geoWithin
или$geoIntersects
, мне не нужно будет сначала преобразовывать ее в GeoJSON, прежде чем использовать ее как параметрquery
.
Я не уверен в следующем:
- Будет ли поддержка для
loc: [x,y]
отброшена в будущем на MongoDB - Любые преимущества индексации от
2dsphere
в отличие от2d
- Возможно, какие-либо запланированные дополнения
GeoJSON
к MongoDB могут привести к необходимости согласованности, упомянутой выше.
Я предпочел бы перейти на GeoJSON
, пока мои данные по-прежнему управляемы, чем в будущем в будущем под большим напряжением.
Могу ли я, пожалуйста, просить полностью (хотя бы слегка) продуманный ответ. Я не буду правильно выбирать правильный ответ, поэтому я могу оценить любые ответы.
Я также не уверен, что SO - это подходящее место для постановки вопроса, поэтому, если DBA является более подходящим местом, я переведу туда вопрос. Я выбрал SO, потому что здесь много активности, связанной с MongoDB.