【问题标题】:RequestCharge on DocumentDb aggregate operationDocumentDb 聚合操作上的 RequestCharge
【发布时间】:2017-06-16 16:25:02
【问题描述】:

在对 documentDb 执行 linq 计数查询时是否可以获得 RequestCharge? 例如示例 linq 查询

   count = client.CreateDocumentQuery<Family>(collectionUri, DefaultOptions)
       .Where(f => f.LastName == "Andersen")
       .Count();

谢谢

唐纳

【问题讨论】:

    标签: azure-cosmosdb


    【解决方案1】:

    在对 documentDb 执行 linq 计数查询时是否可以获得 RequestCharge?

    如果要对 documentDb 使用 linq count 查询,需要在 Count 方法之前调用 ToList 方法。

    .ToList().Count();
    

    它将向 documentDb 服务器发送多个查询并取回所有文档。这是我在调用 ToList().Count() 时在 Fiddler 中找到的请求列表。我的集合中只有 2 个文档,因此发送了 2 个 /dbs/ToDoList/colls/Items 请求。

    相当于下面的代码,RequestCharges可以用下面的代码相加。

    IDocumentQuery<T> query = client.CreateDocumentQuery<Family>(collectionUri, DefaultOptions)
        .Where(f => f.LastName == "Andersen")
        .AsDocumentQuery();
    
    List<T> results = new List<T>();
    double sumRequestCharges = 0;
    while (query.HasMoreResults)
    {
        FeedResponse<T> queryResult = await query.ExecuteNextAsync<T>();
        sumRequestCharges += queryResult.RequestCharge;
        results.AddRange(queryResult);
    }
    

    如果您只需要查询文档的计数,我们建议您使用 sql 查询而不是 .ToList 方法。它不会向 documentDb 服务器发送多个请求并节省大量时间。以下代码供您参考。

    var query = client.CreateDocumentQuery<object>(
        UriFactory.CreateDocumentCollectionUri(DatabaseId, CollectionId),new SqlQuerySpec("SELECT count(c.id) FROM c")).AsDocumentQuery();
    FeedResponse <object> queryResult = await query.ExecuteNextAsync<object>();
    double requestCharge = queryResult.RequestCharge;
    

    【讨论】:

    • 谢谢 Amor 我将使用 sql 选择查询,看看会产生什么。请注意,我正在处理的文档数据库查询示例不使用 ToList 方法!
    • 直接调用Count方法会抛出异常。如果它适用于您,您可以检查使用 Fiddler 调用 Count 方法时发送了多少请求。
    • 嗨,Amor,请参阅此链接了解 DocumentClient 进行的 3 次调用 - stackoverflow.com/questions/44590614/…
    • 您现在对这个话题有什么问题?如果此问题得到解决,我们将重点关注您发布的新主题。
    • 对不起,阿莫尔,链接是为了显示 DocumentClient 发出的请求。当您直接调用 .Count() 或 .CountAsync() 时,您看到的是否相同?很奇怪你得到一个例外。你在哪个版本的 DocumentDb 包上 - 我在 1.14.1 上。
    猜你喜欢
    • 1970-01-01
    • 2014-06-28
    • 1970-01-01
    • 1970-01-01
    • 2018-04-17
    • 1970-01-01
    • 2023-02-17
    • 2013-01-06
    • 2023-03-19
    相关资源
    最近更新 更多