首页 > 解决方案 > 获取 Collection CosmosDb 中的所有文档

问题描述

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

我的代码如下

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

它不工作。我可以找到一个特定的文件,但不是全部

谢谢

标签: c#azure-cosmosdb

解决方案


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

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

但是,请注意您的练习。对于返回大量文档的操作,建议您使用该.AsDocumentQuery()方法,然后执行ExecuteNextAsyncwhile query.HasMoreResults

.ToList()您应该这样做,因为如果您只在 上使用 CosmosDB SDK 确实会同步进行线路传输IQueryable,这将不利于您的应用程序的性能。

是 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
        }
    }
}

推荐阅读