1. クエリ

クエリ クライアント

Version:
日本語翻訳に関する免責事項

このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。

この SDK には、クエリを実行するクエリ クライアントがあります。

クエリの作成

クエリの作成の詳細については、「LINQ セクションを使用したクエリの作成」を参照してください。

クエリ結果の処理

クエリの実行後、IQueryResult が返されます。この結果には、次のプロパティがあります。

  • Items: クエリに一致したエンティティ/ID (合計結果全体のサブセットとなる場合があります)
  • TotalNumberOfResults: Sitecore Content Hub のクエリに一致したアイテムの数 (Items に含まれていないアイテムも含みます)。
  • Offset: スキップされたアイテムの数。

単一のエンティティに対するクエリ

クエリが単一のエンティティのみに一致することが確実な場合は、SingleAsync メソッドの使用が便利です。

IEntity entity = await MClient.Querying.SingleAsync(query);
警告

クエリに複数のアイテムが一致する場合、InvalidOperationException がスローされます。

単一のエンティティ ID に対するクエリ

クエリが単一のエンティティのみに一致することが確実な場合は、SingleIdAsync メソッドの使用が便利です。

long? entityId = await MClient.Querying.SingleIdAsync(query);
警告

クエリに複数のアイテムが一致する場合、InvalidOperationException がスローされます。

1 つまたは複数のエンティティに対するクエリ

1 つまたは複数のエンティティに対してクエリを実行するには、次のようにします。

IEntityQueryResult queryResult = await MClient.Querying.QueryAsync(query);

IEntityQueryResult.Items には、返されたエンティティが含まれています。

1 つまたは複数のエンティティ ID に対するクエリ

1 つまたは複数のエンティティ ID に対してクエリを実行するには、次のようにします。

IIdQueryResult queryResult = await MClient.Querying.QueryIdsAsync(query);

IIdQueryResult.Items には、返された ID (long 形式) が含まれています。

クエリ結果エンティティの反復

クエリが少数から中程度の数の結果を返す場合 (既定の設定では最大 10,000 件の結果)、イテレーターを使用してエンティティを簡単にバッチ処理できます。

次のスニペットは、イテレーターを作成しています。

IEntityIterator iterator = MClient.Querying.CreateEntityIterator(query);

次のスニペットでは、イテレーターを使用してエンティティをバッチ処理しています。

while (await iterator.MoveNextAsync())
{
var entities = iterator.Current.Items;
// Do something with the entities
}

イテレーターがエンティティのすべてのバッチの処理を終了すると、while ループは自動的に終了します。

警告

イテレーターが設定された最大結果数を超えると、サーバーは例外をスローします。その場合は、スクロールが必要になります。

クエリ結果エンティティ ID の反復

クエリが小サイズから中程度のサイズの結果を返す場合 (既定の設定では最大10,000 件の結果)、イテレーターを使用してエンティティ ID を簡単にバッチ処理できます。

次のスニペットは、イテレーターを作成しています。

IIdIterator iterator = MClient.Querying.CreateIdIterator(query);

次のスニペットでは、イテレーターを使用してエンティティ ID をバッチ処理しています。

while (await iterator.MoveNextAsync())
{
var ids = iterator.Current.Items;
// Do something with the ids
}

イテレーターがエンティティのすべてのバッチの処理を終了すると、while ループは自動的に終了します。

警告

イテレーターが設定された最大結果数を超えると、サーバーは例外をスローします。その場合は、スクロールが必要になります。

非推奨ノート

Query クラスに、EntityLoadOptions プロパティと LoadConfiguration プロパティを設定することが可能です。1 つ目のプロパティは過去の WebApiClient SDK で使用されていましたが、3.0 では非推奨になりました。3.1 では、Query クラスと読み込み設定が分離されました。これらのプロパティの使用は控えることをお勧めしますが、必要に応じて、クエリ オブジェクトを渡すときの追加のパラメーターとして読み込み設定を渡せます。

この記事を改善するための提案がある場合は、 お知らせください!