2012-03-14 10 views
2

私はMongoDB用のWebベースのビューアを作成しており、GridFSで使用可能なバケットをリストしたいと考えています。バケット名を取得しない限り、バケットに含まれるファイルを一覧表示することはできません。私はmongo-javaのドキュメントを検索しましたが、バケット名を取得するためのAPIは見つかりませんでした。バケット名のリストを取得するためのJava APIがありますか?MongoDB:GridFSで使用可能なバケットのリストを取得していますか?

答えて

1

バケットのリストを取得する直接の方法はないと思います。バケットを明示的に指定する必要があるため、これはおそらく必要ではないため、一般的には、探しているものを知っているデータベースに移動します。

A多少クルージ的解決策は、それはおそらくあなたの誤解を招くような結果を与えるだろう、誰かがコレクション「.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

はい、これが唯一の選択肢であると思われます。それは今のところ役立ちます。ありがとう! –

関連する問題