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