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
}
}
}
)