クエリ クライアント

Current version: 4.0
日本語翻訳に関する免責事項

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

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

[!注] 次のコード例の client 変数は IMClient インスタンスを意味します。

スクリプト SDK を使用する場合、このインスタンスは自動的に作成され、MClient という名前が付けられます。

Web SDK を使用する場合、変数名は自由に選択できますが、ドキュメントの例では client という名前が使われています。

クエリの作成

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

クエリ結果の処理

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

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

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

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

RequestResponse
IEntity entity = await client.Querying.SingleAsync(query);

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

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

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

RequestResponse
long? entityId = await client.Querying.SingleIdAsync(query);

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

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

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

RequestResponse
IEntityQueryResult queryResult = await client.Querying.QueryAsync(query);

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

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

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

RequestResponse
IIdQueryResult queryResult = await client.Querying.QueryIdsAsync(query);

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

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

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

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

RequestResponse
IEntityIterator iterator = client.Querying.CreateEntityIterator(query);

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

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

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

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

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

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

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

RequestResponse
IIdIterator iterator = client.Querying.CreateIdIterator(query);

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

RequestResponse
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 クラスと読み込み設定が分離されました。 これらのプロパティの使用は控えることをお勧めしますが、必要に応じて、クエリ オブジェクトを渡すときの追加のパラメーターとして読み込み設定を渡せます。

何かフィードバックはありますか?

この記事を改善するための提案がある場合は、