GraphQLクエリ
このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。
GraphQLでは、長い形式と短い形式の両方でクエリを作成できます。
デフォルトでは、GraphQLクエリは最初に見つかった10個の結果のみを返します。これを変更するには、first引数を使用します。Sitecore Content HubでのGraphQLクエリの構造と実装については、GraphQLの例を参照してください。
IDによるアセットのSearch
次のクエリは、特定のID (asset.alexander-mils-667996) を持つM_Assetエンティティタイプから1つのアセットに関するデータをフェッチします。
結果は次のとおりです。
定義によるSearch
次のクエリは、M_Contentエンティティ型からデータをフェッチし、各エンティティのidとcontent_Nameを返します。
結果は次のとおりです。
インターフェイスから型を解決する
Interfaceは、インターフェイスを実装するために型に含める必要がある特定のフィールドのセットを含む抽象型です。これは、Content Hubで定義されたContentTypesエンティティでのみ使用できます。
次のクエリは、名前がFruitful Email、Fruitful Blog、またはHealthy Mimosaを含むエンティティをM.Contentからフェッチします。
結果は次のとおりです。
これらの結果には、コンテンツ名フィールド、仮想M_Content_Blogタイプのブログタイトルと本文フィールド、仮想M-Content_Emailタイプのメールの件名と本文フィールドが含まれます。このようなインクルードを要求するには、クエリでタイプの先頭に ... on Typeを付け、インターフェイスが返されたときにコンテンツ タイプの修飾子を作成します。
トータル
totalフィールドは、指定した条件に一致するエンティティの数を返します。
次の例では条件が指定されていないため、クエリはM.Content内のエンティティの合計数を返します。
結果には、合計23個のエンティティが表示されます。
どこ
クエリにwhere句を追加すると、カスタム条件 ( ANDやORなどの論理演算子や、次のような接尾辞を含む) に従って結果の数を制限できます。
-
_eq
-
_neq
-
contains
-
fulltext
等しい
次の例には、アセットtitleが特定のフレーズと等しくなければならないことを示すwhere句が含まれています。
結果は次のとおりです。
等しくない
次の例には、アセットisDraftプロパティがnullでない値を持つ必要があることを指定するwhere句が含まれています。
結果は次のとおりです。
含む
contains接尾辞を使用して、特定のフィールド内の語句を検索します。この接尾辞は1つのフィールドでのみ機能します。
次の例は、content_Nameプロパティに "Fruitful" という用語を含める必要があることを指定するwhere句が含まれています。
結果は次のとおりです。
演算子
contains接尾辞と一緒に使用できる演算子は他にもあります。
-
fieldname_in - 潜在的な値の定義されたリストに表示される値を確認します。
-
fieldname_startswith特定の文字列で始まる値を確認します。
-
fieldname_endswith特定の文字列で終わる値を確認します。
完全なリストを表示するには、GraphQL IDEでSchemaタブをクリックします。
ほとんどの演算子には、指定した条件に一致しない値を検索する反転バージョンが含まれています。たとえば、fieldname_not_containsはfieldname_containsの反対です。
全文検索
where句でfulltextを使用して、全文検索を実行します。contains接尾辞とは異なり、fulltextは、関連するエンティティのすべてのフィールドと、全文検索用にマークされた祖先への適用可能な関係を、特定の単語または語句を検索します。検索されるフィールドは、Content Hubでフルテキスト プロパティとして構成されているフィールドです。
次の例では、検索可能なフィールドでfruitful lemonという語句をM.Assetにクエリします。
結果は次のとおりです。
fulltextを他の接尾辞と組み合わせることができます。
結果は次のとおりです。
注文順
orderByキーワードを使用して、結果セットを特定の順序で並べ替えます。
次のクエリは、レシピのタイトルで結果をソートします。 _DESCまたは _ASCを追加して、ソート順を降順または昇順に指定できます。
結果は次のとおりです。
論理演算子
ANDとORの論理演算子を使用してステートメントを結合し、クエリに高度なロジックを作成できます。
そして
AND演算子は、2つのステートメントを組み合わせるために使用されます。特定のエンティティがクエリによって返されるには、そのエンティティに対して両方のステートメントがtrueである必要があります。
次のクエリは、コンテンツ名にHealthy Mimosaが含まれ、ブログの引用がWho wants a mimosaされているM.Contentから結果を返します。
結果は次のとおりです。
又は
OR演算子は、2つのステートメントを組み合わせるために使用されます。クエリによって返される特定のエンティティの場合、そのエンティティに対して少なくとも1つのステートメントがtrueである必要があります。
次のクエリは、コンテンツ名がThe Power of ProteinまたはHealthy Mimosaであるコンテンツを返します。
結果は次のとおりです。
ANDとネストされたOR
AND演算子とOR演算子をネストできます。
次のクエリは、summer savingsまたはFruitful refreshing ginger lemonadeという名前のコンテンツを検索します。
結果は次のとおりです。
タイプ名
__typenameフィールドには、そのオブジェクトのGraphQLスキーマタイプの名前が含まれます。例えば:
複数のクエリの実行
1つの要求で複数のクエリを実行できます。クエリは互いに影響しません。次の例では、2つのクエリが同時に実行されています。
-
最初のクエリ(Blog)は、仮想ブログタイプを使用して、タイトルにFruitfulが含まれ、本文がnullでないブログをM.Contentで検索します。結果はブログのタイトルの昇順で並べ替えられます。
-
2番目のクエリ(Email)は、タイトルにFruitfulが含まれ、本文がnullでないメールを、仮想電子メール タイプを使用してM.Contentで検索します。結果はメールの種類ごとに昇順で並べ替えられます。
これら2つのクエリの結果は、dataという名前の1つのオブジェクトにグループ化され、次のようになります。
カーソルベースのページネーション
カーソルベースのページネーションは、データセット内の特定の項目へのポインターを返します。後続の要求では、サーバーは指定されたポインターの後に結果を返します。
まずは
first引数は、クエリによって返される結果の数を制限します。この引数の値は1,000未満にする必要があります。デフォルト値は10です。次の例では、制限は2つの結果です。
first引数を指定しない場合、このクエリは28個のエントリを返します。first引数を2に設定すると、結果には最初に見つかった2つのエンティティのみが含まれます。
ページ情報
pageInfoタイプには、ページネーションに必要な情報が含まれています。
エンドカーソル
endCursorフィールドは、現在のページの最後のエンティティに関連付けられたカーソルを表します。
カーソルは不透明であり、クライアントによる操作を意図していません。
結果は次のとおりです。
has次へ
hasNextは、使用可能な結果がさらにあるかどうかを示すブール値です。
結果は次のとおりです。
hasNextがtrueであるため、返されなかった結果がさらにあります。
後
afterパラメーターを使用すると、データセット全体の特定のポイントより後に発生した結果のみを返すことができます。このポイントは、endCursor引数を含むクエリを使用して取得できるカーソルを使用して決定されます。次のクエリでは、コンテンツ項目がeyJzZWFyY2hBZnRlciI6WyIxNjEzNzMyMDk1MTcyIl0sImNvdW50Ijo1fQ==.
結果は次のとおりです。