375 votes

MongoDB Obtenir les noms de toutes les clés de la collection

J'aimerais obtenir les noms de toutes les clés d'une collection MongoDB.

Par exemple, à partir de ceci:

 db.things.insert( { type : ['dog', 'cat'] } );
db.things.insert( { egg : ['cat'] } );
db.things.insert( { type : [] } );
db.things.insert( { hello : []  } );
 

J'aimerais obtenir les clés uniques:

 type, egg, hello
 

À votre santé

385voto

kristina Points 7269

Vous pouvez le faire avec MapReduce:

 mr = db.runCommand({
  "mapreduce" : "my_collection",
  "map" : function() {
    for (var key in this) { emit(key, null); }
  },
  "reduce" : function(key, stuff) { return null; }, 
  "out": "my_collection" + "_keys"
})
 

Puis lancez distinct sur la collection résultante afin de trouver toutes les clés:

 db[mr.result].distinct("_id")
["foo", "bar", "baz", "_id", ...]
 

234voto

James Cropcho Points 1160

Avec la réponse de Kristina comme source d'inspiration, j'ai créé un outil open source appelé Variety qui fait exactement cela: https://github.com/variety/variety

J'espère que vous trouverez cela utile. Faites-moi savoir si vous avez des questions ou si vous avez des problèmes pour l'utiliser.

Bonne chance!

11voto

Laizer Points 1599

À l’aide de python. Retourne l’ensemble de toutes les clés de niveau supérieur dans la collection :

10voto

Carlos LM Points 54

Essaye ça:

 doc=db.thinks.findOne();
for (key in doc) print(key);
 

9voto

BobHy Points 525

Voici l’exemple travaillé en Python : cet exemple renvoie des résultats en ligne.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X