MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Consulta do MongoDB:$near com agregação


Você terá que usar $geoNear , e somente se você estiver usando a V2.4 em diante
db.users.aggregate(   
    {$geoNear : {
        near: [-1, -2],
        distanceField: "distance",
        query : {"_id" : "id1"},
        uniqueDocs: true,
        maxDistance : 2000
}})

Editar:após editar a pergunta


A consulta abaixo fornecerá localização e distância, mas não recupera o _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}} 
)

Observe a adição de includeLocs e eliminação de uniqueDocs: true

Para também recuperar o _id interno, você terá que (seguindo este exemplo) desenrolar e projetar condicionalmente ou algo assim, mas acho que não vale a pena, a menos que você precise do endereço em vez do _id