如何获取Azure DocumentDB帐户中所有数据库的列表?

时间:2015-10-30 12:44:20

标签: c# .net azure-cosmosdb

刚开始使用DocumentDb,尝试在多个acoounts / databases / collections之上构建一个分片层。

在.net SDK 1.5中,有没有办法查询或列出某个帐户中的所有数据库?

4 个答案:

答案 0 :(得分:3)

您可以通过带(和不带)条件的查询获取列表中的所有数据库信息。

var client = new DocumentClient(new Uri("yourEndPointUrl"), "yourAuthKey");
var list = client.CreateDatabaseQuery().AsEnumerable().ToList();

警告:它看起来像虚拟的AsEnumerable()。ToList(),但ToList()本身不能动态类型的对话原因。

答案 1 :(得分:0)

GitHub上有一些Powershell Commandlets在夏天发布,你可以使用它来获取所有数据库的列表。

列出给定Azure DocumentDB数据库帐户中的所有数据库

Import-Module PATH_TO_Module\Azrdocdb.dll
$ctx = New-Context -Uri <uri> -Key <key>
Get-databases -Context $ctx | ft

以下是full article的链接 HEre是GitHub repository

的链接

答案 2 :(得分:0)

https://github.com/Azure-Samples/documentdb-dotnet-getting-started/blob/master/src/Program.cs

第66行 - 排除where子句。

关于分片,我强烈建议您使用其中一个分区解析器并让SDK为您处理

见这里:https://azure.microsoft.com/en-us/documentation/articles/documentdb-sharding/

答案 3 :(得分:0)

使用 CosmosDB sdk v4 中的 CosmosClient,您可以使用以下代码检索所有数据库,其中“Id”是数据库的名称:

var iterator = _client.GetDatabaseQueryIterator<DatabaseProperties>(cancellationToken: cancellationToken).GetAsyncEnumerator(cancellationToken);

while (await iterator.MoveNextAsync())
{
    var dbName = iterator.Current.Id;
}