刚开始使用DocumentDb,尝试在多个acoounts / databases / collections之上构建一个分片层。
在.net SDK 1.5中,有没有办法查询或列出某个帐户中的所有数据库?
答案 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;
}