2012-12-17 7 views
1

Je veux trouver des valeurs distinctes des villes d'une collection contenant des objets mentionnés ci-dessous:MongoDB Requête complexe d'objets

{ 
location:{ 
       address:'XYZ', 
       city:'New York' 
     } 
} 

Pouvez-vous me aider à la requête que je dois tirer? Je sais que je dois utiliser elemMatch et $exists. Mais ma requête suivante semble fonctionner et retourne un ensemble vide:

db.collectionName.distinct({'location':{'city':{$exists: true}}}) 

Répondre

3

db.collection.distinct prend la requête en tant que 2ème paramètre.

Voilà comment vous devriez le faire: -

db.collectionName.distinct('location.city', {'location.city': {$exists: true}}) 

De plus, vous pouvez également utiliser cette commande de base de données distinct: -

db.runCommand({ "distinct": "collectionName", 
       "key": "location.city", 
       "query": {'location.city' : {$exists: true}} 
       }).values 
+0

Merci. Il vérifie également une valeur. Mongodb est vraiment génial :) –

1

db.collectionName.distinct('location.city') devrait faire l'affaire.

+0

Merci beaucoup. :) –