2017-02-04 1 views
1

Je le document ci-dessous dans une collection

{ 
"_id" : ObjectId("589550ae930b4acade1e2157"), 
"itemId" : "2", 
"loc" : { 
    "type" : "GeometryCollection", 
    "geometries" : [ 
     { 
      "type" : "Point", 
      "coordinates" : [ 
       -121.9771985, 
       37.5637936 
      ], 
      "address" : "Athy St" 
     }, 
     { 
      "type" : "Point", 
      "coordinates" : [ 
       -121.9430202, 
       37.3972994 
      ], 
      "address" : "River Side Ct" 
     } 
    ] 
} 

J'utilise la requête ci-dessous pour trouver l'élément de position la plus proche:

db.store.find(
    { 
    loc: 
     { $near : 
      { 
      $geometry: { type: "Point", coordinates: [-121.9777269,37.5607686] }, 
      $maxDistance: 3.0 * 1609.34 
      } 
     } 
    } 
) 

I J'essaie de restreindre pour aller chercher et afficher seulement l'adresse correspondante la plus proche. Supposons que si l'emplacement interrogé correspond seulement à River Side ct, je ne veux pas retourner Athy Street. C'est un tableau de collection de géométrie. J'ai essayé d'utiliser des projections mais je n'ai pas travaillé.

Pouvez-vous s'il vous plaît laissez-moi savoir comment limiter cela? Toute aide est vraiment appréciée.

Merci d'avance.

Maddy

Répondre

1

Les types d'opération MongoDB $near par la distance (le plus proche au plus éloigné, comme mentionné dans le documentation), donc tout ce que vous devez faire est de limiter les résultats.

db.store.find(
    { 
    loc: 
     { $near : 
      { 
      $geometry: { type: "Point", coordinates: [-121.9777269,37.5607686] }, 
      $maxDistance: 3.0 * 1609.34 
      } 
     } 
    } 
).limit(1)