Con l'introduzione di 2.3 >
MongoDB è diventato ancora più utile con la gestione e l'interrogazione dei dati di posizione. MongoDB memorizza i documenti come BSON, quindi ogni documento ha tutti i campi del documento, che ovviamente portano a database più grandi del nostro RMDBS convenzionale.GeoJSON e MongoDB: vale la pena conservare punti come GeoJSON.Point?
Ho usato per memorizzare polilinee e poligoni come una serie di punti indicizzati, con un campo extra che rappresenta l'ordine di ogni riga (lo stavo facendo per garantire la coerenza mentre uso JavaScript, quindi i punti non erano sempre memorizzati nel loro giusto ordine). E 'stato qualcosa di simile:
polyline: {
[
point: [0,0],
order: 0
],
[
point: [0,1],
order: 1
]
}
Mentre ora uso:
polyline: {
type: 'LineString',
coordinates: [
[0,0],
[1,0]
]
}
ho visto un miglioramento della dimensione dei documenti, come alcune polilinee possono avere fino a 500 punti.
Tuttavia, mi chiedo quali sarebbero i vantaggi di archiviare tutti i miei dati come . Io sono scoraggiato dall'aumento delle dimensioni del documento, come ad esempio:
loc: [1,0]
è modo migliore di
loc: {
type: 'Point',
coordinates: [0,1]
}
e sarebbe quindi più facile lavorare con.
La mia domanda è:
è meglio/consigliato di memorizzare punti come GeoJSON
oggetti in contrapposizione ad un array di 2 punti?
Quello che ho preso in considerazione è la seguente:
- vincoli di dimensione: ho potuto potenzialmente avere milioni di documenti con una posizione, che potrebbe avere un impatto la dimensione della collezione, e potenzialmente tasca.
- Coerenza: sarebbe meglio gestire ogni set di coordinate nel formato
lng, lat
anziché attenersi alat, lng
per i punti e il primo per tutte le altre funzioni di posizione. - Praticità: se utilizzo un punto e utilizzo un
$geoWithin
o$geoIntersects
con esso, non è necessario convertirlo prima in GeoJSON prima di utilizzarlo come parametroquery
.
Quello di cui sono sicuro di è:
- Sia il supporto per
loc: [x,y]
verrà abbandonato in futuro su MongoDB - Eventuali prestazioni di indicizzazione da
2dsphere
al contrario di2d
- Sia qualsiasi previsto
GeoJSON
l'aggiunta a MongoDB potrebbe comportare la necessità della coerenza sopra menzionata.
Preferisco passare a GeoJSON
mentre i miei dati sono ancora gestibili, piuttosto che passare in futuro sotto sforzo.
Posso gentilmente chiedere una risposta approfondita (anche se leggermente) ponderata. Presto non selezionerò una risposta corretta, quindi posso valutare tutte le risposte.
Inoltre, non sono sicuro che SO sia il posto giusto per porre la domanda, quindi se DBA è un luogo più appropriato, sposterò la domanda lì. Ho scelto SO perché qui c'è un sacco di attività correlate a MongoDB.
Sono accettare la tua risposta. Il tuo secondo punto è quello che mi convince. Avevo letto al riguardo ma ho dimenticato che ora posso usare gli indici composti su 2dsphere –