Questo capitolo introduce una delle funzioni di interrogazione geospaziale di MongoDB, che è quella di interrogare i dati dei documenti in base alla distanza.

Scenari di utilizzo: ricerca di negozi nelle vicinanze e ricerca di persone nelle vicinanze.

Tutorial Prerequisiti

Formato di Archiviazione Dati Geospaziali di MongoDB

I prerequisiti per l'interrogazione dei dati in base alla distanza sono i seguenti:

  • Ogni dato del documento contiene un campo che archivia dati di coordinate, ad esempio: il campo location memorizza le coordinate di un negozio.
  • Creare un indice spaziale 2dsphere o 2d.

L'operatore $near

MongoDB utilizza l'operatore $near per interrogare i dati dei documenti in base alla distanza.

Formato:

{
   <campo di localizzazione>: { // Campo che memorizza i dati di coordinate
     $near: {
       $geometry: { // Impostare le coordinate di riferimento per il confronto
          type: "Point" ,
          coordinates: [ longitudine, latitudine ]
       },
       $maxDistance: distanza massima, in metri,
       $minDistance: distanza minima, in metri
     }
   }
}

Nota: I dati restituiti dalla query $near sono ordinati dal più vicino al più lontano.

Esempio

Supponiamo che la collezione shop memorizzi dati dei negozi, dove il campo location memorizza le coordinate di ciascun negozio. La seguente interrogazione trova il negozio più vicino a me (distanza minima 1000 metri, distanza massima 5000 metri).

db.shop.find(
   {
     location:
       { $near :
          {
            $geometry: { type: "Point",  coordinates: [ -73.9667, 40.78 ] }, // Le mie coordinate
            $minDistance: 1000, // Distanza minima
            $maxDistance: 5000 // Distanza massima
          }
       }
   }
)