3 votes

MongoDB : Obtenir la liste des buckets disponibles dans GridFS ?

Je travaille à la création d'une visionneuse web pour MongoDB et je veux lister les buckets disponibles dans GridFS. Si je n'obtiens pas le nom du seau, je ne serai pas en mesure de lister les fichiers contenus dans le seau. J'ai cherché dans la documentation Mongo-java mais je n'ai pas trouvé d'API pour obtenir les noms des seaux. Existe-t-il une API java disponible ou une solution alternative pour obtenir la liste des noms de seaux ?

1voto

Wes Freeman Points 17475

Je ne pense pas qu'il y ait un moyen direct d'obtenir la liste des seaux. Ce n'est probablement pas souvent nécessaire, car vous devez spécifier explicitement les buckets, donc vous allez généralement dans la base de données en sachant ce qu'il faut chercher.

Une solution quelque peu maladroite consiste à inspecter les noms des collections (bien sûr, si quelqu'un étiquetait deux collections ".chunks" et ".files", les résultats seraient probablement trompeurs) :

GridFS fs = new GridFS(db, "buck");
fs.createFile();
fs = new GridFS(db, "bucket");
fs.createFile();
fs = new GridFS(db, "test");
fs.createFile();
Set<String> colls = db.getCollectionNames();
for(String collName : colls) {
   if(collName.endsWith(".chunks")) {
      String potentialBucketName = collName.substring(0,collName.indexOf(".chunks"));
      if(colls.contains(potentialBucketName+".files")) {
         System.out.println(potentialBucketName + " is a bucket");
      }
   }
}

donne les résultats :

buck is a bucket
bucket is a bucket
test is a bucket

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