MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Requête MongoDB :$near avec agrégation

Vous devrez utiliser $geoNear , et uniquement si vous utilisez la V2.4 et plus

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

Modifier :après modification de la question

La requête ci-dessous vous donnera l'emplacement et la distance, mais ne récupère pas le _id interne (élément de tableau)

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

Notez l'ajout de includeLocs et élimination de uniqueDocs: true

Pour récupérer également le _id interne, vous devrez (en suivant cet exemple) vous dérouler et projeter conditionnellement, mais je ne pense pas que cela en vaille la peine, sauf si vous avez besoin de l'adresse au lieu du _id