2013-03-07 5 views
21

di tronchi con la documentazione MongoDB (link) se si desidera memorizzare le informazioni geospaziali in un campo di documento, si hanno due opzioni, una matrice o un documento incorporato, e l'ordine dovrebbe essere sempre longitudine latitudine.Come conservare informazioni geospaziali in MongoDB

Se si desidera utilizzare un documento incorporato, come posso garantire l'ordine del campo?

Oppure i campi nel documento incorporato hanno un nome specifico?

risposta

24

con un documento incorporato, indipendentemente dal nome del campo nel documento incorporato, il primo campo deve contenere il valore di longitudine e il secondo campo deve contenere il valore di latitudine. Per esempio:

db.zips2.insert({ _id: 1, city: "b", loc: { x: -73.974, y: 40.764 } }) 
db.zips2.insert({ _id: 2, city: "b", loc: { x: -73.981, y: 40.768 } }) 

Qui il campo x sarebbe la longitudine; e il campo y corrisponderebbe alla latitudine.

saluti

+4

'I valori della matrice può essere sia gli array, come in [55.5, 42.3] documenti, o incorporati, come in {lng: 55.5, Lat: 42.3} .' - http://docs.mongodb.org/manual/core/geospatial-indexes/#store-location-data – Loren

29

2D Geospatial Index, Store Location Data

"Tutti i documenti devono memorizzare i dati di localizzazione nello stesso ordine. Se si utilizza la latitudine e la longitudine come sistema di coordinate, Conservare sempre primi. Solo gli operatori di indice di longitudine di MongoDB 2d sferiche riconoscere l'ordinamento [longitudine, latitudine]. "

Here's a good post about Geospatial Queries in MongoDB nel caso in cui ne avete bisogno.

+0

Questo mi ha appena salvato da un'ora di mal di testa. Stavo seguendo un tutorial e mi hanno lasciato questo bocconcino di informazioni. Mongo continuava a lanciare un errore durante sureIndex: "Impossibile estrarre le chiavi geografiche da oggetti, geometria malformata?" –

3

Vi consiglio di dare un nome campo: x and y, invece di longitude/latitude, perché dopo un aggiornamento, longitudine e latitudine saranno riordinati in modo alfabetico, in modo invertito.

1

Questi indici ci consentono di trovare le cose in base alla posizione. Abbiamo 2 opzioni: 2D & 3D In 2D, abbiamo un piano cartesiano con x & y coordinate e un mucchio di oggetti diversi.

2D cartesian plane

Il documento ha bisogno di memorizzare una sorta di x, y posizione con ensureIndex({'location':'2d', 'type':1}). L'opzione type specifica la direzione dell'indice, cioè ascendente o discendente (ed è opzionale). Può essere un indice composto. Per trovare posizioni vicine utilizzare il comando db.collectionName.find({location: {$near:[x,y]}}). E praticamente parlando, il modo in cui questo è spesso usato è attraverso un limit. Per limitare i risultati a 20 append .limit(20).

+8

fantastiche abilità mspaint –

0

documentazione MongoDB ha detto quanto segue:

un campo denominato coordinate che specifica le coordinate dell'oggetto. Se specificando latitudine e longitudine, elencare il longitudine primo e quindi di latitudine:

valori di longitudine validi sono compresi tra -180 e 180, estremi inclusi. I valori di latitudine validi sono compresi tra -90 e 90 (entrambi inclusi).

Oficial MongoDB documentazione: https://docs.mongodb.com/manual/geospatial-queries/#geospatial-indexes