azure-cosmosdb - 如何并行查询不同类型的文档?

标签 azure-cosmosdb

我正在使用 Cosmos DB (DocumentDB) 和 .NET Core。假设我必须完全不同的文档(简化示例):

public class Market // DocumentType = "market"
{
    public string Id {get;set;}
    public string Description {get; set;}
}

public class City // DocumentTyupe = "city"
{
    public string Id {get;set;}
    public string Name {get; set;}
}

要获得所有这些,我可以一一运行两个查询:

var markets = client.CreateDocumentQuery<Market>()
.Where(x => x.DocumentType == "market").ToList()

var cities = client.CreateDocumentQuery<City>()
.Where(x => x.DocumentType == "city").ToList()

并行执行两个查询的推荐方法是什么?所以我在想这样的事情:

var markets = QueryMarkets(); // returns Task    
var cities = QueryCities(); // returns Task
Task.WhenAll(markets, cities); //execute in parallel

是否有内置的东西可以让我受益?

最佳答案

Cosmos 没有内置功能可让您从服务器端并行执行多个查询。您在客户端应用程序中使用 Task.WhenAll 并行等待它们的方法是正确的。

唯一的另一种选择是创建一个自定义存储过程,它可以聚合多个查询的结果,但根据您显示的示例,我认为对速度或 RU 没有任何好处消费沿着这条路线走下去。

关于azure-cosmosdb - 如何并行查询不同类型的文档?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45519378/

相关文章:

azure - 具有多个分区键的 Cosmos DB

c# - 在具有不同分区模式的Azure DocumentDB中创建集合

azure - 如何通过mongoDB协议(protocol)在CosmosDB中查询$near

c# - 从 DocumentDB 查询时出现异常 : Microsoft. Azure.Documents.RequestRateTooLargeException

node.js - 使用 Azure Mobile Apps for Node 在 Cosmos DB 上执行 SQL 查询联接

azure-cosmosdb - Cosmos DB 应用按字段排序会删除所有没有该字段的文档

azure-cosmosdb - Azure API 管理 - Cosmos DB

azure - ARM 模板是否会覆盖脚本创建的现有资源?

azure - 是否可以使用 Java Azure SDK 的服务主体对 CosmosDB 进行身份验证?

c# - 当我只需要计数而不读取 Document-Db 数据库中的所有文档时,如何使用 Linq 构建 IQueryable 查询?