首页 > 解决方案 > Couchbase:使用 Java SDK 3 列出集群中可用的存储桶、范围和集合

问题描述

在 Java 应用程序上工作,我想列出所有可用的存储桶/范围和可供用户选择的集合。这是使用 Couchbase Java SDK 3.0 编写的

我没有在网上找到任何资源。

非常感谢,

标签: javacollectionscouchbasebucketscopes

解决方案


Cluster 有一个buckets()返回 BucketManager 的方法。您可以使用此管理器获取存储桶名称到存储桶信息的映射。如果您只想要名称,请从此地图的键集中获取它们。

要访问范围/集合信息,首先从集群中获取一个存储桶。你可以调用bucket的collections()方法来获取bucket的CollectionManager。从那里您可以获取所有范围,并查询每个范围以找出它包含哪些集合。

Cluster cluster = Cluster.connect("localhost", "Administrator", "password");
cluster.waitUntilReady(Duration.ofSeconds(10));

BucketManager bucketManager = cluster.buckets();
Set<String> bucketNames = bucketManager.getAllBuckets().keySet();

for (String bucketName : bucketNames) {
  Bucket bucket = cluster.bucket(bucketName);
  System.out.println("Bucket: " + bucketName);

  CollectionManager collectionManager = bucket.collections();
  for (ScopeSpec scope : collectionManager.getAllScopes()) {
    System.out.println("  Scope: " + scope.name());

    for (CollectionSpec collection : scope.collections()) {
      System.out.println("    Collection: " + collection.name());
    }
  }
}

FeatureNotAvailableException如果服务器不支持集合,则会抛出此代码。


推荐阅读