はdocumentDbに対するLINQカウントクエリを実行するときRequestChargeを取得することが可能ですか?
documentDbに対してlinqカウントクエリを使用する場合は、Countメソッドの前にToListメソッドを呼び出す必要があります。
.ToList().Count();
これは、documentDbサーバーに複数のクエリを送信し、すべてのドキュメントを戻します。 ToList()を呼び出すと、Fiddlerで見つかったリクエストリストを次に示します。Count()。私のコレクションには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);
}
ドキュメントのカウントを照会するだけであれば、.ToListメソッドの代わりにSQLクエリを使用することをお勧めします。それは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のselectクエリを再生し、その生成内容を確認します。私が作業していたドキュメントdbクエリサンプルは、ToListメソッドを使用しないことに注意してください。 –
Countメソッドを直接呼び出すと例外がスローされます。あなたの側で動作する場合は、Fiddlerを使用してCountメソッドを呼び出したときに送信された要求の数を確認できます。 – Amor
こんにちはAmor、DocumentClientが行う3回の呼び出しについては、このリンクを参照してください - https://stackoverflow.com/questions/44590614/documentdb-query-that-expects-full-results-from-aggregate-functions-is-not-sup –