Puedes query datos de ubicación que aparezcan cerca de un punto especificado en una superficie plana.
Para query datos de ubicación cerca de un punto especificado, usa el
$near operador:
db.<collection>.find( { <location field> : { $near : [ <longitude>, <latitude> ], $maxDistance : <distance in meters> } } )
Acerca de esta tarea
Al especificar pares de coordenadas en el operador
$near, enumera primero la longitud y luego la latitud.Los valores de longitud válidos están entre
-180y180, ambos inclusive.Los valores de latitud válidos están entre
-90y90, ambos inclusive.
Especifique la distancia en el campo
$maxDistanceen metros.
Antes de comenzar
Crear la colección
contacts:db.contacts.insertMany( [ { name: "Evander Otylia", phone: "202-555-0193", address: [ 55.5, 42.3 ] }, { name: "Georgine Lestaw", phone: "714-555-0107", address: [ -74, 44.74 ] } ] ) El campo
addresscontiene legacy coordinate pairs.Para consultar datos de ubicación con el operador
$near, debes crear un índice geoespacial en el campo que contiene los datos de ubicación.Crear un índice 2D en el campo
address:db.contacts.createIndex( { address: "2d" } )
Procedimiento
Utilizar $near para query la colección. La siguiente $near query devuelve documentos que cuentan con un address campo a menos de 50 metros del par de coordenadas [ -73.92, 40.78 ]:
db.contacts.find( { address: { $near: [ -73.92, 40.78 ], $maxDistance : 50 } } )
Salida:
[ { _id: ObjectId("640a3dd9c639b6f094b00e89"), name: 'Georgine Lestaw', phone: '714-555-0107', address: [ -74, 44.74 ] } ]
Los resultados se ordenan por distancia desde el punto consultado, de más cercano a más lejano.
Obtén más información
Para realizar queries de proximidad en una superficie esférica, consulta Query ubicaciones cerca de un punto en una esfera.