MongoDB : List Collections et autres méthodes de listing
Il existe quatre méthodes différentes pour lister ses collections dans MongoDB : List Collections, Show Collections, db.getCollectionNames() et db.getCollectionInfos(). La première est la plus utilisée. Elle permet d’afficher tous les noms et options de chacune des listes.
Afficher les Collections MongoDB sous forme de liste
Le système de gestion de base de données NoSQL MongoDB se caractérise par sa grande flexibilité et son caractère évolutif. Contrairement à MySQL, le système n’utilise pas de tableaux mais stocke les données sous forme de documents dans des collections. Il est ainsi possible de créer ces collections avec la commande MongoDB Create Collection et de les supprimer avec la commande MongoDB Drop Collection.
Le système propose plusieurs commandes MongoDB pour afficher une vue d’ensemble de toutes les collections. Si vous souhaitez afficher certaines d’entre elles, ou toutes les collections, utilisez les commandes List Collections, Show Collections ou encore les méthodes db.getCollectionNames() et db.getCollectionInfos().
La commande List Collections
La commande MongoDB List Collections est un moyen très pratique pour afficher toutes les collections ou une partie d’entre elles. Elle affiche tous les noms et options des différentes listes et peut être spécifiée par plusieurs paramètres.
Syntaxe de List Collections
Voici comment la commande List Collections se construit :
{listCollections: 1, filter: <document>, nameOnly: <boolean>, authorizedCollections: <boolean>, comment: <any>}</any></boolean></boolean></document>
Les quatre paramètres facultatifs de List Collections sont :
- filter : adapte la requête de recherche ;
- nameOnly : valeur booléenne qui détermine si seul le nom de la collection concernée doit être affiché ou si des informations complémentaires doivent aussi être fournies ;
- authorizedCollections : valeur booléenne qui limite l’accès à la liste et ne l’autorise qu’aux utilisateurs qui disposent des droits ;
- comment : permet d’ajouter une description plus détaillée ou une balise de la requête de recherche.
Exemple d’utilisation de List Collections
La commande s’utilise comme dans l’exemple ci-dessous :
db.runCommand({listCollections: 1, authorizedCollections: true, nameOnly: true})
La sortie est alors un curseur avec les informations disponibles. À titre d’exemple, voici à quoi cela ressemble :
"cursor" : {
"id" : NumberLong (0),
"ns" : "listeclients.$cmd.listCollections",
"firstBatch" : [
{
"name" : "liste.france",
"type" : "collection"
},
{
"name" : "liste.france",
"type" : "collection"
},
{
"name" : "liste.italie",
"type" : "collection"
}
]
},
"ok" : 1
}
Alternative 1 : Show Collections
Pour obtenir un aperçu rapide des collections dans votre base de données actuelle, utilisez la commande Show Collections. Cette commande permet aussi de lister les collections MongoDB. Pour cela, vous appelez d’abord la base de données correspondante et demandez ensuite toutes les collections. Voici à quoi ressemble la sortie :
>use listeclients
>show collections
liste.france
liste.allemagne
liste.italie
Alternative 2 : db.getCollectionNames()
Pour un aperçu rapide des collections dans votre base de données, vous pouvez aussi utiliser la méthode db.getCollectionNames(). Celle-ci renvoie uniquement les noms des différentes collections et se révèle particulièrement utile si vous souhaitez simplement lister certaines collections MongoDB. Voici comment se présentent la commande et la sortie :
>db.getCollectionNames();
[
"liste.france",
"liste.allemagne",
"liste.italie"
]
Alternative 3 : db.getCollectionInfos()
La méthode db.getCollectionInfos() permet d’avoir un aperçu précis sur la liste des collections MongoDB. Outre le nom, elle fournit aussi toutes les informations complémentaires pertinentes. Pour la première collection, voici à quoi cela ressemble avec notre exemple :
>db.getCollectionInfos();
[
{
"name" : "liste.france",
"type" : "collection",
"options" : {
},
"info" : {
"readOnly" : true,
"uuid" : UUID (<uuid>)</uuid>
},
"idIndex" : {
"v" : 2,
"key" : {
"_id" : 1
},
"name" : "_iod_"
}
},