2012-03-14 4 views
2

Я работаю над созданием веб-просмотра для MongoDB и хочу перечислить ведра, доступные в GridFS. Если я не получу имя ведра, я не смогу перечислить файлы, содержащиеся в ведре. Я искал документацию mongo-java, но не смог найти API для получения имен ведра. Есть ли какой-либо java API или альтернативное решение для получения списка имен ведра?MongoDB: Получение списка ведер, доступных в GridFS?

ответ

1

Я не думаю, что есть прямой способ получить список ведер. Это, вероятно, не часто необходимо, потому что вам нужно явно указывать ведра, поэтому вы обычно заходите в базу данных, зная, что искать.

Несколько глупое решение состоит в том, чтобы сделать что-то подобное, проверив имена коллекций (конечно, если кто-то случайно назвал пару коллекций «.chunks» и «.files», это, вероятно, дало бы вам вводящие в заблуждение результаты):

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"); 
     } 
    } 
} 

дает результаты:

buck is a bucket 
bucket is a bucket 
test is a bucket 
+0

Да, это, кажется, единственная альтернатива. Сейчас это помогает. Благодаря ! –