【问题标题】:Get All documents in a Collection CosmosDb获取 Collection CosmosDb 中的所有文档
【发布时间】:2018-12-05 23:35:04
【问题描述】:

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

我的代码如下

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

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

谢谢

【问题讨论】:

    标签: c# azure-cosmosdb


    【解决方案1】:

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

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

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

    您应该这样做,因为如果您只在 IQueryable 上使用 .ToList(),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
            }
        }
    }
    

    【讨论】:

    • 您的链接已失效且不在 a​​rchive.org 上。我要去steal some MSDN code from here 并将其放入您的答案中,以便我们记录下来。如果代码代表你的意思,我很抱歉,请add a quick sample!谢谢。
    猜你喜欢
    • 1970-01-01
    • 2018-08-03
    • 2022-12-05
    • 1970-01-01
    • 1970-01-01
    • 2022-09-28
    • 1970-01-01
    • 1970-01-01
    • 2021-11-17
    相关资源
    最近更新 更多