2017-08-05 2 views
0

私は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;} 
} 

私は2つのクエリを一つずつ実行することができ、それらのすべてを取得するには:

両方のクエリを実行するための推奨されるアプローチは何
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 

を私が恩恵を受けることに組み込まれているものがありますか?

答えて

2

Cosmosにはサーバー側から複数のクエリを並行して実行できる機能はありません。あなたのクライアントアプリケーションでTask.WhenAllを使ってそれらを並行して待つアプローチは正しいです。

これ以外の唯一の選択肢は、複数のクエリの結果を集計することができますが、表示している例に基づいてカスタムストアドプロシージャを作成することです。スピードまたはRU消費はそのルートを下る。

関連する問題