GraphQL クエリ
このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。
GraphQL を使用すると、省略形と長い形式の両方でクエリを作成できます。
検索クエリについて、詳しくは以下をご覧ください。
GraphQL クエリ キーワードについて、詳しくは以下をご覧ください。
- Total
- Where (Equal to, Not equal to, Contains)
- Order by
- 論理演算子 (AND, OR, AND with nested OR)
- Typename フィールド
- GraphQL の長い形式のクエリ
- カーソル ベースの改ページ (First, Page info, Has Next, End Cursor, After)
ID で検索
ID で検索
ID で検索は、ID に一致するエンティティである単一の結果を返します。
次の例では、Asset.alexander-mils-667996 という ID を M.Asset 上で検索します。戻りフィールドには、fileName、title、およびcreatedOn の日付があります。
結果は次のとおりです。
クエリの形状が、結果とまったく同じであることがすぐにわかるでしょう。 この形状が GraphQL の基本です。常に期待どおりの結果が得られ、サーバーは要求されたフィールドを認識しているためです。 fileName には string 型が返されます。この場合はエンティティの名前 M.Asset の ID asset.alexander-mils-667996 が返されています。
定義による検索
定義による検索
定義による検索は、検索されたエンティティに基づいて結果セットを返します。
この例では、M.Content のすべてを検索し (単一の結果ではなく)、id と content_Name の戻りフィールドを要求します。
結果は次のとおりです。
インターフェイスで検索
インターフェイスで検索
インターフェイスは、宣言された共通フィールドがある抽象型です。 インターフェイスを実装するすべての型は、名前と型が完全に一致するすべてのフィールドを定義する必要があります。 インターフェイスの実装は、可能な型で明示的にリストされています。
次の例は、コンテンツの名前に Fruitful Email、Fruitful Blog、Healthy Mimosa のいずれかを含む M.Content を検索します。
結果には、コンテンツ名フィールド、仮想コンテンツのブログ型のブログ タイトルと本文フィールド、および仮想電子メール型の電子メールの件名と本文フィールドが含まれます。この包含は、クエリの ... on [Type] で型を付加し、サブクエリを作成することで行います。
結果は次のとおりです。
合計
合計
total 関数は、指定した基準に一致するエンティティの数を返します。
次の例では基準を指定していないため、クエリは * M.Content* のエンティティの総数を返します。
結果は以下のとおりで、* M.Content* のアイテムが合計 23 件返されます。
Where
Where
where 句は結果の数を制限します。 where 条件には、AND や OR などの論理演算子や、次のような比較演算子を併用できます。
[!注] AND 論理演算子を使用する場合は、すべての条件を満たす必要があります。 OR 論理演算子を使用する場合は、いずれかの条件を満たすものが返されます。
Equal to
次の例では、_eq 構文を使って、M.Content の publishStatus が UpdatingPublishStatus に等しいものを検索します。
結果は次のとおりです。
Not equal to
次の例では、_neq 構文を使って、publishStatus が null に等しくないものを検索します。
結果は次のとおりです。
含む
contains 述語を WHERE 句で使用すると、文字ベースのデータ型を含むフルテキスト列で全文検索を行うことができます。contains は単語またはフレーズを検索します。
次の例では、M.Content に Fruitful という単語が含まれるコンテンツ名を検索します。
結果は次のとおりです。
ここには、他のパラメーターを追加できます。次に例を示します。
[fieldname]_contains: 文字列フィールドにサブ文字列が含まれる結果をフィルタリングします。[fieldname]_in: リストをチェックして、フィールドの値が指定したリスト内の任意のサブ文字列と一致するレコードを返します。[fieldname]_starts_with: 指定したサブ文字列で始まる値をチェックする式です。[fieldname]_ends_with: 上記の式と同様に、指定したサブ文字列で終わる値を検索します。
また、reverse ステートメントを使用してリストにさらに追加することもできます (逆の結果を返すため)。 たとえば、[fieldname]_not_contains は [fieldname]_contains の反対です。
Order by
Order by
orderBy キーワードを使用すると、結果セットを昇順または降順で並べ替えます。
次の例では、クエリはレシピのタイトルで結果を昇順に並べ替えています。
結果は次のとおりです。
論理演算子
論理演算子
フィルターを AND や OR 論理演算子で囲むことができます。
AND
AND 演算子は、AND で区切られているすべての条件が TRUE であるレコードを返します。
この例のクエリは、M.Content のうち、コンテンツ名に Healthy Mimosa が含まれ、公開ステータスが UpdatingPublishStatus に等しい結果が返されます。
結果は次のとおりです。
OR
OR 演算子は、OR で区切られているいずれかの条件が TRUE であるレコードを返します。 以下に例を示します。
結果は次のとおりです。
OR を入れ子にした AND
AND と OR 演算子は入れ子にできます。
次のクエリは、名前に Summer が含まれており、AND は変数として NotPublished であるか、OR でそれ以外に 2021-02-05T14:11:50.000Z のいずれかである結果を返します。
結果は次のとおりです。
Typename
Typename
__typename フィールドは文字列に解決され、これにより、データ型とクライアントを区別できます。 以下に例を示します。
GraphQL の長い形式のクエリ
GraphQL の長い形式のクエリ
このクエリは構文 [your_query_name] から開始できます。 クエリには任意の名前を付けることができます。
そのクエリ内で、複数の個別のクエリに表示名を指定して実行することもできます。 構造は次のようになります。
次の例では、2 つのクエリが同時に実行されています。
-
blog という名前を付けた最初のクエリが仮想ブログ型を使用して M.Content を検索し、タイトルに Fruitful が含まれ、本文が null ではないブログを返します。 また、ブログのタイトルの昇順で結果を並べ替えます。
-
email という名前を付けた 2 つ目のクエリが仮想メール型を使用して M.Content を検索し、タイトルに Fruitful が含まれ、本文が null ではないブログを返します。 また、メールの型の昇順で結果を並べ替えます。
結果は次のとおりです (結果はグループ化されています)。
カーソルベースの改ページ
カーソルベースの改ページ
カーソルベースの改ページは、データセット内の特定のアイテムへのポインターを返すことによって機能します。 以降の要求では、サーバーは指定されたポインターの後に結果を返します。 カーソルベースの改ページは、オフセット改ページを使用する場合の欠点に対処しますが、これに伴う次のようなトレードオフがあります。
- カーソルは、ソース テーブル内の一意の連続した列に基づいている必要があります。
- クライアントは特定のページにジャンプできません。
First
first パラメータは、クエリによって返される結果の数を 2 つまでなどに制限します。返される結果は 1000 未満である必要があります。first 引数を指定しない場合は、デフォルト値の 10 が使用されます。 クエリは 10 件の結果を返します。
結果は次のとおりです (結果の合計は 28 ですが、最初の 2 つの結果のみが返されます)。
pageInfo
pageInfo フィールドには、改ページに必要な関連情報が含まれています。 null 非許容の PageInfo 型を返します。
endCursor
endCursor は、現在のクエリに対して返される最後のエッジに関連付けられたカーソルを表します。
結果は次のとおりです。
hasNext
hasNext は、他に利用可能な結果があるかどうかを示すブール値です。
結果は次のとおりです (hasNext が true であるため、返されない結果がさらに多くあります)。
After
改ページは after 引数によって行われます。 以前のクエリから endCursor の値を導き、サーバーにクエリを実行してカーソル以降の結果を検索します。
結果は次のとおりです。