获取集合CosmosDb中的所有文档

Mic*_*Man 2 c# azure-cosmosdb

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

我的代码如下

 client.CreateDocumentQuery(UriFactory.CreateDocumentUri(dbName, colName,"id")).ToList();
Run Code Online (Sandbox Code Playgroud)

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

谢谢

Nic*_*sas 5

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

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

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

您应该这样做,因为CosmosDB SDK仅.ToList()在上使用时确实会通过电线同步跳闸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
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 您的链接已终止并且不在archive.org上。我要[从此处窃取一些MSDN代码](https://docs.microsoft.com/zh-cn/dotnet/api/microsoft.azure.documents.linq.documentqueryable.asdocumentquery?view=azure-dotnet)并将其放入您的答案中,以便我们对其进行记录。如果代码__不是_代表您的意思,我表示歉意,请[添加快速示例](https://meta.stackexchange.com/questions/8231/are-answers-that-just-contain-links-elsewhere-真的很好-answers#comment15235_8259)!谢谢。 (4认同)