MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

MongoDB-Abfrage:$near mit Aggregation

Sie müssen $geoNear verwenden , und nur wenn Sie V2.4 oder höher verwenden

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

Bearbeiten:nach Bearbeitung der Frage

Die folgende Abfrage gibt Ihnen Standort und Entfernung, ruft jedoch nicht die interne (Array-Element) _id

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

Beachten Sie die Hinzufügung von includeLocs und Eliminierung von uniqueDocs: true

Um auch die interne _id abzurufen, müssen Sie (nach diesem Beispiel) abwickeln und bedingt projizieren oder so, aber ich denke nicht, dass es sich lohnt, es sei denn, Sie benötigen die Adresse anstelle der _id