MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Query MongoDB:$ vicino all'aggregazione

Dovrai usare $geoNear , e solo se stai usando V2.4 in poi

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

Modifica:dopo la modifica alla domanda

La query seguente ti darà posizione e distanza, ma non recupera l'elemento interno (array) _id

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

Nota l'aggiunta di includeLocs ed eliminazione di uniqueDocs: true

Per recuperare anche l'_id interno, dovrai (seguendo questo esempio) rilassarti e proiettare in modo condizionale o giù di lì, ma non credo ne valga la pena, a meno che tu non abbia bisogno dell'indirizzo invece dell'_id