2017-04-24 52 views
1

我尝试从Azure DocumentDB数据库接收所有文档。我找到了表明我的问题的例子,但它不起作用。 https://github.com/Microsoft/azure-docs/blob/master/articles/documentdb/documentdb-sharding.md#create-queries-against-all-collections-in-the-database从数据库Azure DocumentDB接收所有文档

我的代码(C#):

var client = new DocumentClient(new Uri(endPointUrl), authorizationKey); 
var database = await client.ReadDatabaseAsync(UriFactory.CreateDatabaseUri(DatabaseId)); 
var documents = client.CreateDocumentQuery(database.Resource.SelfLink).ToList(); 

CreateDocumentQuery例外:

消息:{ “服务器无法解析URL”}; 错误:{{“code”:“NotFound”,“message”:“服务器无法解析URL”。 }};

那么,我可以在一次查询中从多个集合中接收文档吗?

回答

1

那么,我可以在一次查询中从多个集合中接收文档吗?

简单的答案是否定的。你不能这样做。

您需要做的是首先列出数据库中的所有集合,然后分别从每个集合中获取文档。对于每个集合,您都需要执行单独的查询。

此外,请注意,如果集合中有超过1000个文档,则单个请求将返回最多1000个文档。在这种情况下,您将从服务中获得延续令牌。您需要使用此延续标记重新发送查询以获取该集合中的下一组数据。你会重复这个过程直到时间服务返回你一个连续的令牌作为回应。缺少连续标记意味着来自集合的所有文档都被提取。然后,您可以转到数据库中的下一个集合(如果您正在执行顺序执行)。

+0

非常感谢您的全面回应。所以这就像我想的,但我不确定通过GitHub的信息。 – Pyotreq

相关问题