我正在使用 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/