MongoDB: Получение списка корзин, доступных в GridFS? - PullRequest
3 голосов
/ 14 марта 2012

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

1 Ответ

1 голос
/ 14 марта 2012

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

Несколько неуклюжее решение - сделать что-то подобное, осмотрев коллекцию.имена (конечно, если кто-то пометит пару коллекций ".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
...