sql >> Base de Datos >  >> NoSQL >> MongoDB

Consulta MongoDB:$ cerca con agregación

Deberá usar $geoNear , y solo si está utilizando V2.4 en adelante

db.users.aggregate(   
    {$geoNear : {
        near: [-1, -2],
        distanceField: "distance",
        query : {"_id" : "id1"},
        uniqueDocs: true,
        maxDistance : 2000
}})

Editar:después de editar la pregunta

La siguiente consulta le dará la ubicación y la distancia, pero no recupera el _id interno (elemento de matriz)

db.users.aggregate(   
  {$geoNear : {
    near: [-1, -2],
    distanceField: "distance",
    includeLocs: "location",
    query : {"_id" : "id1"},
    maxDistance : 2000
  }},
  {$project : {"location" : 1, "_id" : 0, "distance" : 1}} 
)

Tenga en cuenta la adición de includeLocs y eliminación de uniqueDocs: true

Para recuperar también el _id interno, tendrá que (siguiendo este ejemplo) relajarse y proyectar condicionalmente más o menos, pero no creo que valga la pena, a menos que necesite la dirección en lugar del _id