Docs Menu
Docs Home
/ /
Atlas App Services
/ /

GraphQL の型、リゾルバ、演算子

項目一覧

  • Overview
  • スカラー型
  • ドキュメントの種類
  • フィールド マッピング
  • BSON 型マッピング
  • 入力型
  • クエリ入力
  • InsertInput
  • UpdateInput
  • 関係入力
  • 入力による並べ替え
  • クエリリゾルバ
  • 単一ドキュメントの検索
  • 複数ドキュメントの検索
  • ミューテーション リゾルバ
  • 単一ドキュメントのインサート
  • 複数のドキュメントの挿入
  • 単一ドキュメントの更新
  • 複数のドキュメントの更新
  • 単一ドキュメントのアップサート
  • 単一ドキュメントの置換
  • 単一ドキュメントの削除
  • 複数のドキュメントの削除
  • Paginate Data

Atlas App Services は、定義されたスキーマを持つコレクションに対して GraphQL スキーマを自動的に生成します。各コレクションに対して、App Services は次のものを生成します。

  • コレクション内の単一のドキュメントを表すドキュメントタイプ

  • コレクション内のドキュメントにアクセスして操作を可能にするクエリミューテーションのセット。

  • クエリのフィルター、特定フィールドの変更、および結果のソートを可能にする入力タイプのセット。

注意

コレクション スキーマの例

このページには、 movies コレクションの次のスキーマに基づいて生成された値を示す例が含まれています。

{
"title": "Movie",
"required": ["title"],
"properties": {
"_id": { "bsonType": "objectId" },
"title": { "bsonType": "string" },
"year": { "bsonType": "int" },
"rated": { "bsonType": "string" },
"runtime": { "bsonType": "int" },
"director": { "bsonType": "string" },
"reviews": {
"bsonType": "array",
"items": { "bsonType": "objectId" }
},
"cast": {
"bsonType": "array",
"items": { "bsonType": "string" }
}
}
}

App Services は、すべての標準 GraphQL スカラー型 をサポートしており、ObjectId スカラーも生成します。

次のスカラー型がサポートされています。

  • ObjectId: 文字列としてシリアル化されたObjectId

  • Boolean: true または false

  • String: UTF-8 文字シーケンス

  • Int: 符号付き 32 ビット整数

  • Long: 符号付き 64 ビット整数

  • Float: 符号付き倍精度浮動小数点値

  • DateTime: RFC3339 UTC日時(例:"2020-09-01T15:38:14.918Z")

App Services は、コレクション スキーマに基づいて、コレクション内のドキュメントに対して単一のGraphQL 型を生成します。このは、スキーマの title フィールドに設定されている名前を使用するか、title が指定されていない場合はコレクション名を使用します。

type Movie {
_id: ObjectId
title: String!
year: Int
rated: String
runtime: Int
director: String
cast: [String]
}

App Services は、コレクション スキーマのフィールドを GraphQL 型のフィールドに直接マッピングしようとします。GraphQL 仕様で説明されている有効な名前の定義 は、有効なドキュメント フィールド名がすべてサポートされているわけではないため、App Services では、生成された GraphQL 型のフィールド名を決定するために次の変換ルールを適用します。

  • サポートされていない文字の削除

  • 先頭の数字を取り除く

  • キャメルケースに変換する

  • 二重アンダースコアで始まるフィールドを省略します(例: __myField )

GraphQL 型システムは、スキーマで使用できる BSON types と似ていますが、同一ではありません。App Services は、スキーマ内の BSON types とサポートされている GraphQL 型との間のマップを自動的に試行します。フィールドの種類に同等の GraphQL がない場合、App Services は生成された GraphQL ドキュメントの種類にフィールドを含めません。

次の表に、スキーマで使用できる BSON types と、それらがマッピングされる GraphQL 型を示します。

JSON/BSON 型
GraphQL 型
objectId
ObjectId
int
Int
long
Int
double
Float
decimal
Float
date
DateTime
timestamp
DateTime

注意

JSON は、「値なし」を表す 2 つの型、 undefinednullをサポートしています。GraphQL 仕様では null がサポートされていますが、 undefinedはサポートされていませんので、アプリは次のように undefined 値を変換します。

  • ドキュメント フィールドが明示的にundefinedに設定されている場合、対応する GraphQL 型は空のオブジェクト(つまり{})になります。

  • ドキュメントに対してフィールド名がまったく定義されていない場合、または値が明示的にnullに設定されている場合、対応する GraphQL 型はnullになります。

GraphQLは入力型 を使用するクエリやミューテーションに渡すパラメータを表します。これは、すべての GraphQL API で使用される標準的なアプローチであり、明確で型安全なユーザー入力を定義します。

QueryInput オブジェクトは、クエリに含めるためにドキュメントが満たす必要がある 1 つ以上の条件のセットを定義します。オブジェクトには、ドキュメント型のフィールドだけでなく、App Services が各フィールドの型に基づいて自動的に生成する任意の演算子フィールドが含まれる場合があります。

  • ドキュメント フィールド: QueryInputフィールドの名前がドキュメント型のフィールドと同じである場合、入力フィールドに指定された値とドキュメント内のフィールドの値が同じであれば、App Services はドキュメントを一致させます。

    次のクエリには、2 つのフィールドを持つQueryInputと、ratedyearが含まれています。これらのフィールド名は両方ともMovieドキュメント型で定義されているため、App Services は両方に対して等価一致を実行します。

    このクエリは、2000 年にリリースされ、R 指定されたすべての映画のタイトルを返します。

    movies(query: { rated: "R", year: 2000 }) {
    title
    }
  • 演算子フィールド:QueryInput フィールドがクエリ対象型の有効な演算子フィールドである場合、演算子が true と評価すると、App Services はドキュメントを照合します。

    次のクエリには、2 つのフィールドを持つQueryInputと、rated_inyear_gtが含まれています。これらはどちらも演算子フィールドなので、App Services は各演算子を評価して文書が一致するかどうかを判断します。

    このクエリは、2000 年以降にリリースされ、G または PG-13 指定されたすべての映画のタイトルを返します。

    movies(query: { rated_in: ["G", "PG-13"], year_gt: 2000 }) {
    title
    }

比較演算子フィールドを使用すると、範囲クエリなど、正確な等価性よりも複雑な条件を定義できます。App Services は、フィールド型に基づいて、ドキュメント型のすべてのフィールドに対して比較演算子フィールドのセットを生成します。通常、各比較演算子はすべてのフィールド型のサブセットにのみ適用されるため、App Services は有効な組み合わせの演算子フィールドのみを生成します。

ドキュメント内のフィールドの値が指定された値に対する演算子条件を満たす場合、比較演算子フィールドは特定のドキュメントに対してtrueと評価します。

比較演算子のフィールドの形式は次のとおりです。

<Field Name>_<Operator>: <Operator Value>
演算子
サポートされているフィールド型
演算子の値の型
説明
gt
Int
Float
String
ObjectId
DateTime
<Field Type>

フィールドは指定した値より大きいドキュメントを検索します。

このクエリは、2000 年以降にリリースされたすべての映画を検索します。

movies(query: { year_gt: 2000 }) {
title
year
}
gte
Int
Float
String
ObjectId
DateTime
<Field Type>

フィールドは指定した値以上のドキュメントを検索します。

このクエリは、2000 年以降にリリースされたすべての映画を検索します。

movies(query: { year_gte: 2000 }) {
title
year
}
lt
Int
Float
String
ObjectId
DateTime
<Field Type>

フィールドが指定した値より小さいドキュメントを検索します。

このクエリは、2000 年以前に公開されたすべての映画を検索します。

movies(query: { year_lt: 2000 }) {
title
year
}
lte
Int
Float
String
ObjectId
DateTime
<Field Type>

フィールドが指定した値以下のドキュメントを検索します。

このクエリは、2000 年以前に公開されたすべての映画を検索します。

movies(query: { year_lte: 2000 }) {
title
year
}
ne
Int
Float
String
Boolean
ObjectId
DateTime
<Field Type>

フィールドが指定された値と等しくないドキュメントを検索します。

このクエリは、2000 年以外の年に公開されたすべての映画を検索します。

movies(query: { year_ne: 2000 }) {
title
year
}
in
Int
Float
String
Boolean
ObjectId
DateTime
Array
[<Field Type>]

フィールドが、指定した配列のいずれかの値と等しいドキュメントを検索します。フィールドが Array の場合、フィールド配列の値が指定された配列にも含まれているすべてのドキュメントが検索されます。

このクエリは、エマ・ストーンとライアン・ゴズリングのどちらかまたは両方をフィーチャーしたすべての映画を検索します。

movies(query: { cast_in: ["Emma Stone", "Ryan Gosling"] }) {
title
year
}
nin
Int
Float
String
Boolean
ObjectId
DateTime
Array
[<Field Type>]

フィールドが、指定した配列のどの値とも等しくないドキュメントを検索します。フィールドが Array の場合、フィールド配列の値が指定された配列にも含まれているすべてのドキュメントが検索されます。

このクエリは、G または PG-13指定されていないすべての映画を検索します。

movies(query: { rated_nin: ["G", "PG-13"] }) {
title
year
}

論理演算子フィールドを使用すると、独立したQueryInputオブジェクトの論理的な組み合わせを定義できます。App Services は、すべてのQueryInput型に対してルート レベルの論理演算子フィールドを生成します。

指定されたすべての QueryInput オブジェクトの評価結果が演算子条件を満たす場合、そのドキュメントの論理演算子フィールドは true と評価されます。

論理演算子フィールドの形式は次のとおりです。

<Operator>: [<QueryInput>, ...]
演算子
演算子の値の型
説明
および
[QueryInput!]

指定されたすべてQueryInput オブジェクトに一致するドキュメントを検索します。

このクエリは、PG-13 指定でさらに上映時間が 120 分未満のすべての映画を検索します。

query {
movies(query: { AND: [{ rated: "PG-13" }, { runtime_lt: 120 }] }) {
title
year
}
}
または
[QueryInput!]

指定された QueryInput オブジェクトのいずれかに一致するドキュメントを検索します。

このクエリは、G または PG-13 指定のすべての映画を検索します。

query {
movies(query: { OR: [{ rated: "G" }, { rated: "PG-13" }] }) {
title
year
}
}

要素演算子フィールドを使用すると、ドキュメント内のフィールドを記述するブール値条件を定義できます。App Servicesは、ドキュメント型のすべてのフィールドに対して一連の要素演算子フィールドを生成します。

文書内のフィールドの演算子条件を評価した結果が指定されたブール値と一致する場合、その文書の要素演算子フィールドは true と評価されます。

要素演算子フィールドの形式は次のとおりです。

<Field Name>_<Operator>: <Operator Value>
演算子
サポートされているタイプ
演算子の値の型
説明
exists
すべてのタイプで利用可能
ブール値

フィールドが nullでないドキュメントを検索します。

このクエリは、 yearフィールドに値が定義されていないすべての映画を検索します。

query {
movies(query: { year_exists: false }) {
_id
title
}
}

InsertInputオブジェクトは、コレクションに挿入するドキュメントを定義します。ドキュメントは GraphQL ドキュメント型に準拠し、すべての必須フィールドを含める必要があります。

次のミューテーションには、InsertInput が含まれています。フィールドは複数あり、これらはすべて Movie ドキュメント型で定義されています。Movie タイプでは、すべてのドキュメントに title フィールドが必要です。そのため、InsertInput にはフィールドを含める必要があります。

ミューテーションにより " My Fake Film " という名前の新しいムービーが挿入されます。

insertOneMovie(input: {
title: "My Fake Film",
rated: "UNRATED",
year: 2020
}) {
title
}

UpdateInputオブジェクトは、ドキュメント内の 1 つ以上のフィールドに新しい値を定義します。更新されたドキュメントには新しいフィールド値が含まれます。指定しないフィールドは変更されません。更新された値は、GraphQL ドキュメント タイプに準拠している必要があります。

次のミューテーションには、 titleフィールドを "My Super Real Film" に設定するUpdateInputが含まれています。

updateOneMovie(
query: { title: "My Fake Film" }
set: { title: "My Super Real Film" }
) {
title
}

RelationInput は、変更されたドキュメント内の関係フィールドに関連するドキュメントの新しいセットを定義します。link フィールドを使用して関連コレクションに既に存在するドキュメントを参照したり、create フィールドを使用して関連コレクションに新しいドキュメントを挿入したりできます。

linkcreateの両方を同時に使用することはできません。両方が指定されている場合は、 create操作が優先され、 linkは無視されます。

type RelationInput {
link: [ObjectId]
create: [InsertInput]
}

次のミューテーションには、 reviewsフィールドを変更するUpdateInputが含まれています。フィールドには、別の reviews コレクション内のドキュメントの _id 値の配列が含まれます。これは、フィールドとの関係が定義されているためです。

このミューテーションにより、新しく作成された 1 つのドキュメントと reviews コレクション内の 2 つの既存のドキュメントを指すように関係が設定されます。

updateOneMovie(
query: { title: "My Fake Film" }
set: {
reviews: {
link: ["", ""]
create: []
}
}
) {
title
}

SortByInput列挙型は、クエリによって返されるドキュメントの並べ替え順序を定義します。object または array のタイプがないルートレベルのフィールドであれば、昇順または降順でソートできます。GraphQL API はネストされたソートをサポートしていません。

App Services は、フィールドごとに 2 つの並べ替え列挙値を生成します。各値は、フィールド名とソート方向(ASC または DESC)を組み合わせた完全大文字の識別子です。

次のクエリは、公開された年順に並べられた映画を返します。最新の映画が最初にリストされます。

movies(sortBy: YEAR_DESC) {
title
}

Atlas App Services は、次のようにコレクションごとに 2 つの GraphQL クエリを生成します。

  • コレクション内のドキュメントを検索する単数形クエリ。

  • コレクション内のすべての文書を検索する複数形クエリ。複数形のクエリをフィルタリングして、QueryInput と一致するコレクション内のドキュメントのサブセットのみを含めることができます。

単一ドキュメント クエリ フィールドでは、コレクションに含まれるデータ型と同じ名前が使用されます。クエリされたタイプの単一のドキュメントを返し、次のパラメータを受け入れます。

Parameter
タイプ
説明
query

任意。コレクション内のドキュメントのフィルターを定義するオブジェクト。オブジェクトはデータ型から 1 つ以上のフィールドを指定でき、各フィールドの値を含める必要があります。クエリは、指定されたフィールド値を含むすべてのドキュメントと一致します。

query パラメータを指定しない場合、クエリ操作はすべてのドキュメントに一致します。

query {
movie(query: { title: "The Matrix" }) {
title
year
runtime
director
}
}

マルチ ドキュメント クエリ フィールドは、コレクションに含まれるデータ型と同じ名前を使用しますが、型名の後に "s" が追加されます。クエリされた型のドキュメントの配列を返し、次のパラメータを受け入れます。

Parameter
GraphQL 型
説明
query

任意。コレクション内のドキュメントのフィルターを定義するオブジェクト。オブジェクトはデータ型から 1 つ以上のフィールドを指定でき、各フィールドの値を含める必要があります。クエリは、指定されたフィールド値を含むすべてのドキュメントと一致します。

query引数を指定しない場合、クエリ操作はすべてのドキュメントと一致します。

limit
Int
任意。デフォルトは100 。クエリ結果セットに含めるドキュメントの最大数。クエリが設定された制限値以上にマッチした場合は、マッチしたドキュメントのサブセットのみが返されます。
sortBy

任意。クエリ結果セット内のドキュメントの並べ替え順序を定義する値。object または array のタイプがないルートレベルのフィールドであれば、昇順または降順でソートできます。

sortBy値は、フィールド名と並べ替え方向を組み合わせた、完全に大文字の識別子です。以下に例を挙げます。

  • タイトルをAからZに並べ替えるには、次のようにします TITLE_ASC

  • 評価の高い順に並べ替えたい場合は、次のようにします RATING_DESC

sortBy引数を指定しない場合、クエリ操作では結果セット内のドキュメントの順序が保証されません。

query {
movies(
query: { year: 2000 }
limit: 100
sortBy: TITLE_ASC
) {
title
year
runtime
director
}
}

App Services は、各コレクション内のドキュメントに対して一連のミューテーションを生成します。これらを使用すると、1 つ以上のドキュメントを挿入、変更、および削除できます。

単一ドキュメント挿入ミューテーション フィールドはinsertOne<Type> という名前を使用し、 <Type> はコレクションが含むデータ型の単数形の名前です。挿入されたドキュメントを返し、以下のパラメータを受け付けます。

Parameter
タイプ
説明
data
必須。コレクションに挿入するドキュメント。コレクション スキーマでフィールドが必須とマークされている場合、このドキュメントにはそのフィールドの有効な値を含める必要があります。App Services は、 InsertInputオブジェクト内の GraphQL 型をそれぞれの BSON 型に自動的に変換します。
mutation {
insertOneMovie(data: {
title: "Little Women"
director: "Greta Gerwig"
year: 2019
runtime: 135
}) {
_id
title
}
}

複数文書を挿入するミューテーション フィールドには insertMany<Type>s という名前を使用します。<Type> はコレクションに含まれるデータ型の単数形の名前です。挿入されたドキュメントを返し、以下のパラメータを受け付けます。

Parameter
タイプ
説明
data
必須。コレクションに挿入するドキュメントの配列。配列には少なくとも 1 つのドキュメントが含まれている必要があります。コレクション スキーマでフィールドが必須とマークされている場合、各ドキュメントにはそのフィールドの有効な値を含める必要があります。App Services は、 InsertInputオブジェクト内の GraphQL 型を、コレクション スキーマで定義されているそれぞれの BSON 型に自動的に変換します。
mutation {
insertManyMovies(data: [
{
title: "Little Women"
director: "Greta Gerwig"
year: 2019
runtime: 135
},
{
title: "1917"
director: "Sam Mendes"
year: 2019
runtime: 119
}
]) {
_id
title
}
}

単一ドキュメント更新ミューテーション フィールドには updateOne<Type> という名前を使用します。<Type> はコレクションに含まれるデータ型の単数形の名前です。更新されたドキュメントを返し、以下のパラメータを受け付けます。

Parameter
タイプ
説明
query

任意。コレクション内のどのドキュメントを更新するかを構成するオブジェクト。オブジェクトはデータ型から 1 つ以上のフィールドを指定でき、各フィールドの値を含める必要があります。クエリは、指定されたフィールド値を含むすべてのドキュメントと一致します。

query 引数を指定しない場合、ミューテーションによって結果セットの最初のドキュメントが更新されます。このドキュメントが最後に挿入されたドキュメントである可能性はありますが、保証されません。

set
UpdateInput!
必須。ドキュメント内の 1 つ以上のフィールドに新しい値を定義するオブジェクト。更新されたドキュメントには新しいフィールド値が含まれます。指定しないフィールドは変更されません。App Services は、 UpdateInputオブジェクト内の GraphQL 型をそれぞれの BSON 型に自動的に変換します。
mutation {
updateOneMovie(
query: { title: "The Room" }
set: { runtime: 99 }
) {
_id
title
}
}

複数ドキュメント更新ミューテーション フィールドでは updateMany<Type>s という名前を使用します。<Type> はコレクションに含まれるデータ型の単数形の名前です。照合および変更されたフィールドの数を示す UpdateManyPayload ドキュメントが返され、次のパラメーターを受け入れます。

Parameter
タイプ
説明
query

任意。コレクション内のどのドキュメントを更新するかを構成するオブジェクト。オブジェクトはデータ型から 1 つ以上のフィールドを指定でき、各フィールドの値を含める必要があります。クエリは、指定されたフィールド値を含むすべてのドキュメントと一致します。

query 引数を指定しない場合、ミューテーションによって結果セットの最初のドキュメントが更新されます。このドキュメントが最後に挿入されたドキュメントである可能性はありますが、保証されません。

set
必須。ドキュメント内の 1 つ以上のフィールドに新しい値を定義するオブジェクト。更新されたドキュメントには新しいフィールド値が含まれます。指定しないフィールドは変更されません。App Services は、 UpdateInputオブジェクト内の GraphQL 型をそれぞれの BSON 型に自動的に変換します。
mutation {
updateManyMovies(
query: { director: "Tommy Wiseau" }
set: { director: "Tom Wiseau" }
) {
matchedCount
modifiedCount
}
}

単一文書のアップサートミューテーション フィールドには upsertOne<Type> という名前を使用します。<Type> はコレクションに含まれるデータ型の単数形の名前です。このリゾルバーは、クエリ パラメータに一致するドキュメントを更新し、クエリに一致するドキュメントがない場合は新しいドキュメントを挿入します。アップサートされたドキュメントを返し、次のパラメータを受け入れます。

Parameter
タイプ
説明
query

任意。更新するドキュメントを構成するオブジェクト。オブジェクトはデータ型から 1 つ以上のフィールドを指定でき、各フィールドの値を含める必要があります。クエリは、指定されたフィールド値を含むすべてのドキュメントと一致します。

query 引数を指定しない場合、または一致するドキュメントがない場合、ミューテーションは data パラメーターで指定されたドキュメントを挿入します。

data
必須。query既存のドキュメントと一致しない場合に挿入するドキュメント。queryが一致する場合、クエリされたドキュメントが任意のドキュメントに置き換えられます。コレクション スキーマでフィールドが必須とマークされている場合、このドキュメントにはそのフィールドの有効な値を含める必要があります。App Services は、 InsertInputオブジェクト内の GraphQL 型をそれぞれの BSON 型に自動的に変換します。
mutation {
upsertOneMovie(
query: { title: "Blacksmith Scene" }
data: {
title: "Sandcastles in the Sand",
director: "Robin Scherbatsky"
runtime: 90
year: 2002
}
) {
_id
title
}
}

単一ドキュメント置換ミューテーション フィールドは replaceOne<Type> という名前を使用します。<Type> はコレクションに含まれるデータ型の単数形の名前です。置換されたドキュメントを返し、以下のパラメータを受け付けます。

Parameter
タイプ
説明
query

任意。コレクション内のどのドキュメントを置き換えるかを構成するオブジェクト。オブジェクトはデータ型から 1 つ以上のフィールドを指定でき、各フィールドの値を含める必要があります。クエリは、指定されたフィールド値を含むすべてのドキュメントと一致します。

query 引数を指定しない場合、結果セットの最初のドキュメントがミューテーションに置き換えられます。このドキュメントが最後に挿入されたドキュメントである可能性はありますが、保証されません。

data
必須。クエリされたドキュメントを置き換えるドキュメント。コレクション スキーマでフィールドが必須とマークされている場合、このドキュメントにはそのフィールドの有効な値を含める必要があります。App Services は、 InsertInputオブジェクト内の GraphQL 型をそれぞれの BSON 型に自動的に変換します。
mutation {
replaceOneMovie(
query: { title: "Blacksmith Scene" }
data: {
title: "Sandcastles in the Sand",
director: "Robin Scherbatsky"
runtime: 90
year: 2002
}
) {
_id
title
}
}

単一文書削除ミューテーション フィールドには deleteOne<Type> という名前を使用します。<Type> はコレクションに含まれるデータ型の単数形の名前です。削除されたドキュメントを返し、以下のパラメータを受け付けます。

Parameter
タイプ
説明
query

必須。コレクション内のどのドキュメントを削除するかを構成するオブジェクト。オブジェクトはデータ型から 1 つ以上のフィールドを指定でき、各フィールドの値を含める必要があります。クエリは、指定されたフィールド値を含むすべてのドキュメントと一致します。

query が複数のドキュメントに一致する場合、ミューテーションによって結果セットの最初のドキュメントが削除されます。このドキュメントが最後に挿入されたドキュメントである可能性はありますが、保証されません。

mutation {
deleteOneMovie(query: { title: "The Room" }) {
_id
title
year
runtime
director
}
}

複数文書削除ミューテーション フィールドには deleteMany<Type>s という名前を使用します。<Type> はコレクションに含まれるデータ型の単数形の名前です。この関数は、削除されたドキュメントの数を示す DeleteManyPayload ドキュメントを返し、以下のパラメータを受け入れます。

Parameter
タイプ
説明
query

任意。コレクション内のどのドキュメントを削除するかを構成するオブジェクト。オブジェクトはデータ型から 1 つ以上のフィールドを指定でき、各フィールドの値を含める必要があります。クエリは、指定されたフィールド値を含むすべてのドキュメントと一致します。

query 引数を指定しない場合、ミューテーションはコレクション内のすべてのドキュメントを削除します。

mutation {
deleteManyMovies(query: { director: "Tommy Wiseau" }) {
deletedCount
}
}

GraphQL API で生成されたスキーマによって提供されるタイプを使用して、クエリのデータをページ分割できます。

Atlas GraphQL API には、 GraphQL offsetのドキュメントがページ分割を推奨して いるように、 演算子 はありません 。

代わりに、生成されたスキーマの複数ドキュメントの検索クエリ リゾルバquerylimit 、および sortBy 演算子とともに使用して、データをページ分割できます。

データを昇順にページ付けする:

query PaginateAscending(
# Do not include `previousTitle` for the first query
# in a pagination sequence.
$previousTitle: String,
$limit: Int!,
) {
movies(
query: { title_gt: $previousTitle }
limit: $limit
sortBy: TITLE_ASC
) {
title
year
runtime
director
}
}

データを降順にページ付けする:

query PaginateAscending(
# Do not include `nextTitle` for the first query
# in a pagination sequence.
$nextTitle: String,
$limit: Int!,
) {
movies(
query: { title_lt: $nextTitle }
limit: $limit
sortBy: TITLE_DESC
) {
title
year
runtime
director
}
}

クライアント アプリケーションに実装されたこのページ分割のパターンの例については、Realm Web SDK ドキュメントの「データのページ分割」を参照してください。

注意

このページ区切りのアプローチは、 MongoDB Server のドキュメントで説明されているように、MongoDB ドライバーの範囲クエリに類似しています。

戻る

GraphQLリクエストの認証