2011-04-04 7 views
3

Est-il possible d'ajouter plus de filtres lors de l'utilisation de geoNear dans mongodb? Par exemple, je dis mes enregistrements ressemblent à ce qui suit:mongodb geoNear + filtres supplémentaires?

{ 
_id: {}, 
cid: 1, 
latlon: [ -74.07096147537231, 40.9088747684256 ] 
} 

Puis-je passer « cid » pour être sûr que seuls les enregistrements avec un « cid » qui est égal à « 1 »? Si ce n'est pas possible avec geoNear, comment ferais-je cela? J'utilise geoNear parce qu'il renvoie la distance ...

Merci!

Répondre

10

Oui, bien sûr que c'est possible. Vous pouvez utiliser un filtrage avec $ près comme d'habitude:

db.places.find({ latlon: { $near : [50,50] } }, {cid: 1}) 

Mise à jour:

Si vous avez besoin utiliser à distance db.runCommand, si aucune distance de besoin - db.collection.find comme d'habitude.

De documentation:

La commande geoNear a ajouté avantage de retourner la distance de chaque élément du point spécifié dans les résultats, ainsi que quelques diagnostics pour le dépannage.

Il y a paramètre query dans db.runCommand, vous pouvez l'utiliser comme ceci:

db.runCommand({ geoNear : "latlon" , near : [ 50 , 50 ], num : 10, 
       query : { cid: 1 } }); 
+0

mais j'utilise quelque chose comme: db.runCommand ({geoNear: "locs", près de: [0, 0], sphérique: vrai, maxDistance: range/earthRadius}); Si j'utilise db.example.find(); comment vais-je calculer la distance? – mike

+0

@mike: J'ai mis à jour la réponse. Vérifiez-le pour plus de détails. –

+0

J'ai trouvé cette option "requête:" après avoir posté hier! Mais je vais le marquer comme répondu pour l'aide! Merci beaucoup! – mike

Questions connexes