.net-core - 如何在我的 Cosmos Graph DB 中获取可用的 Graph 容器列表?
问题描述
我正在尝试获取我的 Cosmos Graph Database 的元数据信息。该数据库中创建了许多图表,我想列出这些图表名称。
在 Gremlin API 中,我们支持连接到任何 Graph DB 容器,然后我们可以提交查询,正如我在下面的代码示例中提到的那样。但是这里我们需要一个 {collection},它也是我们的 GraphName。所以不知何故,我们在这里被绑定到一个特定的图表。
var gremlinServer = new GremlinServer(hostname, port, enableSsl: true,
username: "/dbs/" + database + "/colls/" + collection,
password: authKey);
using (var gremlinClient = new GremlinClient(gremlinServer, new GraphSON2Reader(), new GraphSON2Writer(), GremlinClient.GraphSON2MimeType))
{
gremlinClient.SubmitAsync(query);
}
有什么方法可以让我们只连接到 GraphDB 并获取一些元数据信息?例如,就我而言,可用图表列表。
解决方案
看起来 Gremlin 客户端是在集合级别(即图形)实现的,因此无法使用 gremlin 连接从一个帐户/数据库中枚举图形。
您始终可以使用 CosmosDB SDK 连接到帐户并枚举数据库/集合,然后使用 Gremlin 客户端分别连接到它们中的每一个。
Install-Package Microsoft.Azure.Cosmos
using (var client = new CosmosClient(endpoint, authKey))
{
var dbIterator = client.GetDatabaseQueryIterator<DatabaseProperties>();
while(dbIterator.HasMoreResults)
{
foreach (var database in await dbIterator.ReadNextAsync())
{
var containerIterator = database.GetContainerQueryIterator<ContainerProperties>();
while (containerIterator.HasMoreResults)
{
foreach (var container in await containerIterator.ReadNextAsync())
{
Console.WriteLine($"{database.Id} - {container.Id}");
}
}
}
}
}
推荐阅读
- css - HTML Angular Material中的拆分字符串
- .htaccess - 在我的重写和规则 .htaccess 文件上强制使用 HTTPS
- std - std::map 行为不正确,因为 std:unordered_map
- javascript - 如何从反应本机函数返回值?
- node.js - 验证时 JWT 令牌始终无效
- redux - Redux 教程示例中如何生成 counterReducer
- python - 在python上将df转换为一列
- java - 无法在 Linux 上为 Java 程序正确设置 PATH 变量
- javascript - Defining listener function inside function
- postgresql - 如何获取使用 JdbcTemplate 插入的行的任何列的值