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
Total
total 関数は、指定した基準に一致するエンティティの数を返します。
次の例では基準を指定していないため、クエリは M.Content のエンティティの総数を返します。
結果は以下のとおりで、 M.Content のアイテムが合計 23 件返されます。
Where
Where
where 句は結果の数を制限します。where 条件には、AND や OR などの論理演算子や、次のような比較演算子を併用できます。
AND 論理演算子を使用する場合は、すべての条件を満たす必要があります。 OR 論理演算子を使用する場合は、いずれかの条件を満たすものが返されます。
Equal to
次の例では、_eq 構文を使って、M.Asset の title が Group selfie with drinks に等しいものを検索します。
結果は次のとおりです。
Not equal to
次の例では、_neq 構文を使って、isDraft が null に等しくないものを検索します。
結果は次のとおりです。
Contains
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 キーワードを使用すると、結果セットを昇順または降順で並べ替えます。
次の例では、クエリはレシピのタイトルで結果を昇順に並べ替えています。
結果は次のとおりです。
ASC を DESC に置き換えるだけで、降順で並べ替えることができます。
論理演算子
論理演算子
フィルターを AND や OR 論理演算子で囲むことができます。
AND
AND 演算子は、AND で区切られているすべての条件が TRUE であるレコードを返します。
この例のクエリは、M.Content のうち、コンテンツ名に Healthy Mimosa が含まれ、ブログの引用文が Who wants a mimosa に等しい結果が返されます。
結果は次のとおりです。
OR
OR 演算子は、OR で区切られているいずれかの条件が TRUE であるレコードを返します。次に例を示します。
結果は次のとおりです。
OR を入れ子にした AND
AND と OR 演算子は入れ子にできます。
次のクエリは、名前が Summer Savings と等しい、かつ名前が Fruitful refreshing ginger lemonade と一致しない、または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 の値を導き、サーバーにクエリを実行してカーソル以降の結果を検索します。
結果は次のとおりです。