2012-03-14 6 views
2

Je travaille sur la création d'une visionneuse basée sur le Web pour MongoDB et je souhaite répertorier les compartiments disponibles dans GridFS. À moins d'avoir le nom du compartiment, je ne pourrai pas lister les fichiers contenus dans le compartiment. J'ai recherché la documentation de mongo-java mais n'ai pas pu trouver n'importe quelle API pour obtenir les noms de compartiment. Y at-il une API Java disponible ou une solution alternative pour obtenir la liste des noms de baquets?MongoDB: Obtenir la liste des compartiments disponibles dans GridFS?

Répondre

1

Je ne pense pas qu'il existe un moyen direct d'obtenir la liste des compartiments. Cela n'est probablement pas souvent nécessaire, car vous devez spécifier explicitement les compartiments, de sorte que vous allez généralement dans la base de données en sachant ce qu'il faut rechercher. Une solution un peu maladroite est de faire quelque chose comme ça, en inspectant les noms de collection (bien sûr, si quelqu'un arrive à étiqueter quelques collections ".chunks" et ".files", cela vous donnerait probablement des résultats 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 
+0

Oui, cela semble être la seule alternative. Cela aide pour maintenant. Merci ! –

Questions connexes