获取集合CosmosDb中的所有文档

时间:2018-07-05 12:38:10

标签: c# azure-cosmosdb

我想返回CosmosDb集合中的所有文档

我的代码如下

 client.CreateDocumentQuery(UriFactory.CreateDocumentUri(dbName, colName,"id")).ToList();

它不起作用。我可以找到特定文件,但不是全部

谢谢

1 个答案:

答案 0 :(得分:4)

UriFactory.CreateDocumentUri为文档特定查询创建一个Uri。

您想要的是集合中的所有文档,因此您需要创建的是创建一个集合Uri。 您可以使用UriFactory.CreateDocumentCollectionUri(DatabaseName, CollectionName);

不过,请注意您的练习。 对于返回大量文档的操作,建议您使用.AsDocumentQuery()方法,然后在ExecuteNextAsync期间执行query.HasMoreResults

您应该那样做,因为如果您仅在.ToList()上使用IQueryable,那么CosmosDB SDK确实会通过电线同步跳闸,这将对应用程序的性能造成不利影响。

Here是MSDN上有关如何执行此操作的示例。

using (var queryable = client.CreateDocumentQuery<Book>(
    collectionLink,
    new FeedOptions { MaxItemCount = 10 })
    .Where(b => b.Title == "War and Peace")
    .AsDocumentQuery())
{
    while (queryable.HasMoreResults) 
    {
        foreach(Book b in await queryable.ExecuteNextAsync<Book>())
        {
            // Iterate through books
        }
    }
}