Docs Menu
Docs Home
/ /
Atlas App Services
/ /

GraphQL 유형, 해석기 및 연산자

이 페이지의 내용

  • 개요
  • 스칼라 유형
  • 문서 유형
  • 필드 매핑
  • BSON Type 매핑
  • 입력 유형
  • 쿼리 입력
  • InsertInput
  • UpdateInput
  • RelationInput
  • SortByInput
  • 쿼리 해석기
  • 단일 문서 찾기
  • 여러 문서 찾기
  • 변형 해석기
  • 단일 문서 삽입
  • 여러 문서를 삽입합니다.
  • 단일 문서 업데이트
  • 여러 문서 업데이트하기
  • 단일 문서 업로드
  • 단일 문서 교체하기
  • 단일 문서 삭제
  • 여러 문서 삭제
  • Paginate Data

Atlas App Services는 정의된 컬렉션이 있는 모든 컬렉션에 대해 GraphQL 스키마를 자동으로 생성합니다. 각 컬렉션에 대해 App Services는 다음을 생성합니다.

  • 컬렉션 의 단일 문서 를 나타내는 문서 유형 입니다.

  • 컬렉션의 문서에 액세스하고 조작할 수 있는 쿼리변형 집합입니다.

  • 쿼리를 필터링하고, 특정 필드를 수정하고, 결과를 정렬할 수 있는 입력 유형 집합.

참고

collection 스키마 예시

이 페이지에는 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(객체 ID)

  • Boolean: true 또는 false

  • String: UTF-8 문자 시퀀스

  • Int: 서명된 32비트 정수

  • Long: 서명된 64비트 정수

  • Float: 부호 있는 배정밀도 부동 소수점 값

  • DateTime: RFC 3339 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 유형과 매핑되는 GraphQL 유형이 나열되어 있습니다.

JSON/BSON 유형
GraphQL 유형

objectId

ObjectId

int

Int

long

Int

double

Float

decimal

Float

date

DateTime

timestamp

DateTime

참고

JSON은 "no value"를 나타내는 2가지 유형(undefined, null)을 지원합니다. GraphQL 사양은 null을 지원하지만 undefined는 지원하지 않습니다. 따라서 앱은 다음과 같은 방식으로 undefined 값을 변환합니다.

  • 문서 필드가 명시적으로 undefined(으)로 설정된 경우 해당하는 GraphQL 유형은 빈 객체(예: {})입니다.

  • 필드 이름이 문서에 대해 전혀 정의되어 있지 않거나 값이 null(으)로 명시적으로 설정되어 있으면 해당 GraphQL 유형은 null입니다.

GraphQL은 입력 유형을 사용하여 쿼리 및 변형에 전달하는 매개변수를 나타냅니다. 이는 모호하지 않고 형식이 안전한 사용자 입력을 정의하기 위해 모든 GraphQL API에서 사용하는 표준 접근 방식입니다.

QueryInput 객체는 문서가 쿼리에 포함되기 위해 하나 이상의 조건 세트를 정의합니다. 객체에는 문서 유형의 필드와 App Services가 각 필드 유형에 따라 자동으로 생성하는 연산자 필드가 포함될 수 있습니다.

  • 문서 필드: QueryInput 필드의 이름이 문서 유형의 필드와 동일한 경우, 입력 필드에 지정된 값과 문서의 필드 값이 같으면 App Services와 문서가 일치합니다.

    예시

    다음 쿼리에는 ratedyear라는 두 개의 필드가 있는 QueryInput이 포함되어 있습니다. 이 두 필드 이름은 모두 Movie 문서 유형에 정의되어 있으므로 App Services에서 두 필드 이름에 대해 동등성 매치를 수행합니다.

    이 쿼리는 2000년에 개봉한 모든 영화 중 R등급을 받은 영화의 제목을 반환합니다.

    movies(query: { rated: "R", year: 2000 }) {
    title
    }
  • 연산자 필드: QueryInput 필드가 쿼리된 유형에 대해 유효한 연산자 필드인 경우 연산자가 true로 평가되면 App Services는 문서를 일치시킵니다.

    예시

    다음 쿼리에는 rated_inyear_gt(이)라는 두 개의 필드가 있는 QueryInput이(가) 포함되어 있습니다. 두 필드는 모두 연산자 필드이므로 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
}

Int
Float
String
Boolean
ObjectId
DateTime
Array

[<Field Type>]

지정된 배열 내 임의의 값과 동일한 필드가 포함된 문서를 검색합니다. 필드가 Array인 경우 필드 배열 내 임의의 값이 지정된 배열에도 포함되어 있는 문서를 전부 검색합니다.

예시

이 쿼리는 엠마 스톤(Emma Stone)과 라이언 고슬링(Ryan Gosling) 중 한 명이 출연하거나 두 명 다 출연하는 영화를 전부 검색합니다.

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>
연산자
지원되는 유형
연산자 값 유형
설명

이 존재합니다

모든 유형에 사용 가능

부울

필드가 null이(가) 아닌 문서를 찾습니다.

예시

이 쿼리는 year 필드에 정의된 값이 없는 모든 영화를 찾습니다.

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

InsertInput 객체는 컬렉션에 삽입할 문서를 정의합니다. 문서는 GraphQL 문서 유형을 따라야 하며 필수 필드를 모두 포함해야 합니다.

예시

다음 변형에는 Movie 문서 유형에 전부 정의된 필드가 여러 개인 InsertInput이(가) 포함되어 있습니다. Movie 유형의 모든 문서에는 title 필드가 있어야 합니다. 따라서 InsertInput에는 해당 필드 1개가 포함되어야 합니다.

이 변형은 'My Fake Film(내 가짜 영화)'이라는 이름의 새 영화를 삽입합니다.

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

UpdateInput 객체는 문서에서 하나 이상의 필드에 대한 새 값을 정의합니다. 업데이트된 문서에는 새 필드 값이 포함되어 있습니다. 지정하지 않은 필드는 변경되지 않은 상태로 유지됩니다. 업데이트된 값은 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 값 배열이 필드에 포함되어 있습니다.

변형은 새로 생성된 문서 하나와 reviews collection에 있는 기존 문서 두 개를 가리키도록 관계를 설정합니다.

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

SortByInput 열거형은 쿼리에서 반환되는 문서의 정렬 순서를 정의합니다. object 또는 array 유형이 없는 루트 수준 필드를 기준으로 오름차순 및 내림차순으로 정렬할 수 있습니다. GraphQL API는 중첩 정렬을 지원하지 않습니다.

App Services는 각 필드에 대해 두 개의 정렬 열거형 값을 생성합니다. 각 값은 필드 이름과 정렬 방향(ASC 또는 DESC)을 결합한 대문자로 된 식별자입니다.

예시

다음 쿼리는 개봉 연도별로 정렬된 영화를 반환하며 가장 최근 영화가 먼저 나열됩니다.

movies(sortBy: YEAR_DESC) {
title
}

App Services는 컬렉션당 2개의 GraphQL 쿼리를 생성합니다.

  • 컬렉션 내 특정 문서를 검색하는 단수형 쿼리입니다.

  • 컬렉션 내 모든 문서를 검색하는 복수형 쿼리입니다. QueryInput와(과) 일치하는 컬렉션의 문서 하위 세트만 포함되도록 복수형 쿼리를 필터링할 수 있습니다.

단일 문서 쿼리 필드는 collection에 포함된 데이터 유형과 동일한 이름을 사용합니다. 쿼리된 유형의 단일 문서를 반환하고 다음 매개변수를 허용합니다.

Parameter
유형
설명

query

선택 사항입니다. 컬렉션의 문서에 대한 필터를 정의하는 객체입니다. 이 객체는 데이터 유형에서 필드를 한 개 이상 지정할 수 있으며 각 필드에 대한 값을 포함해야 합니다. 이 쿼리는 지정된 필드 값을 포함하는 모든 문서와 일치합니다.

query 매개변수를 지정하지 않으면 쿼리 작업이 모든 문서와 일치합니다.

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

다중 문서 쿼리 필드는 컬렉션에 포함된 데이터 유형과 동일한 이름을 사용하지만 유형 이름에 "s"가 붙습니다. 쿼리된 유형의 문서 배열을 반환하고 다음 매개변수를 허용합니다.

Parameter
GraphQL 유형
설명

query

선택 사항입니다. 컬렉션의 문서에 대한 필터를 정의하는 객체입니다. 이 객체는 데이터 유형에서 필드를 한 개 이상 지정할 수 있으며 각 필드에 대한 값을 포함해야 합니다. 이 쿼리는 지정된 필드 값을 포함하는 모든 문서와 일치합니다.

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는 각 collection의 문서에 대한 변형 세트를 생성합니다. 이를 통해 하나 이상의 문서를 삽입, 수정 및 삭제할 수 있습니다.

이 단일 문서 삽입 변형 필드는 insertOne<Type>(이)라는 이름을 사용합니다. 여기서 <Type>은(는) 컬렉션에 포함된 데이터 유형의 단수형 이름입니다. 이 필드는 삽입된 문서를 반환하고 다음 매개변수를 허용합니다.

Parameter
유형
설명

data

필수 사항입니다. 컬렉션에 삽입할 문서입니다. 컬렉션 스키마가 필드를 필수로 표시하는 경우 이 문서에는 해당 필드에 대한 유효한 값이 포함되어야 합니다. App Services는 InsertInput 객체의 GraphQL 유형을 해당 BSON types로 자동으로 변환합니다.

mutation {
insertOneMovie(data: {
title: "Little Women"
director: "Greta Gerwig"
year: 2019
runtime: 135
}) {
_id
title
}
}

다중 문서 삽입 변형 필드는 insertMany<Type>s이라는 이름을 사용하며, 여기서 <Type>은 컬렉션에 포함된 데이터 유형의 단수형 이름입니다. 이 필드는 삽입된 문서를 반환하고 다음 매개 변수를 허용합니다.

Parameter
유형
설명

data

필수. collection에 삽입할 문서의 배열입니다. 배열에는 문서가 하나 이상 포함되어야 합니다. collection 스키마가 필드를 필수로 표시하는 경우 각 문서에는 해당 필드에 대한 유효한 값이 포함되어야 합니다. App Services는 InsertInput 객체의 GraphQL 유형을 collection 스키마에 정의된 해당 BSON types으로 자동 변환합니다.

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>은(는) collection에 포함된 데이터 유형의 단수형 이름입니다. 업데이트된 문서를 반환하고 다음 매개 변수를 허용합니다.

Parameter
유형
설명

query

선택 사항입니다. 컬렉션에서 어떤 문서를 업데이트할지 설정하는 객체입니다. 이 객체는 데이터 유형에서 필드를 한 개 이상 지정할 수 있으며 각 필드에 대한 값을 포함해야 합니다. 이 쿼리는 지정된 필드 값을 포함하는 모든 문서와 일치합니다.

query 인수를 지정하지 않으면 이 변형이 결과 세트의 첫 번째 문서를 업데이트합니다. 이 첫 번째 문서는 가장 최근에 삽입된 문서일 가능성이 높지만, 이를 장담할 수는 없습니다.

set

UpdateInput!

필수 사항 문서에 있는 하나 이상의 필드에 대한 새 값을 정의하는 객체입니다. 업데이트된 문서에는 새로운 필드 값이 포함됩니다. 지정되지 않은 모든 필드는 변경 없이 그대로 유지됩니다. App Services는 UpdateInput 객체의 GraphQL 타입을 해당 BSON 타입으로 자동 변환합니다.

mutation {
updateOneMovie(
query: { title: "The Room" }
set: { runtime: 99 }
) {
_id
title
}
}

이 복수 문서 업데이트 변형 필드는 updateMany<Type>s이라는 이름을 사용합니다. 여기서 <Type>은 컬렉션에 포함된 데이터 유형의 단수형 이름입니다. 일치하고 수정된 필드 수를 설명하는 UpdateManyPayload 문서를 반환하고 다음 매개변수를 허용합니다.

Parameter
유형
설명

query

선택 사항입니다. 컬렉션에서 어떤 문서를 업데이트할지 설정하는 객체입니다. 이 객체는 데이터 유형에서 필드를 한 개 이상 지정할 수 있으며 각 필드에 대한 값을 포함해야 합니다. 이 쿼리는 지정된 필드 값을 포함하는 모든 문서와 일치합니다.

query 인수를 지정하지 않으면 이 변형이 결과 세트의 첫 번째 문서를 업데이트합니다. 이 첫 번째 문서는 가장 최근에 삽입된 문서일 가능성이 높지만, 이를 장담할 수는 없습니다.

set

필수 사항 문서에 있는 하나 이상의 필드에 대한 새 값을 정의하는 객체입니다. 업데이트된 문서에는 새로운 필드 값이 포함됩니다. 지정되지 않은 모든 필드는 변경 없이 그대로 유지됩니다. App Services는 UpdateInput 객체의 GraphQL 타입을 해당 BSON 타입으로 자동 변환합니다.

mutation {
updateManyMovies(
query: { director: "Tommy Wiseau" }
set: { director: "Tom Wiseau" }
) {
matchedCount
modifiedCount
}
}

이 단일 문서 업서트 변형 필드는 upsertOne<Type>(이)라는 이름을 사용합니다. 여기서 <Type>은(는) 컬렉션에 포함된 데이터 유형의 단수형 이름입니다. 이 해석기는 해당 쿼리 매개변수와 일치하는 문서를 업데이트하고, 쿼리와 일치하는 문서가 없는 경우 새 문서를 삽입합니다. 아울러 업서트된 문서를 반환하고 다음 매개변수를 허용합니다.

Parameter
유형
설명

query

선택 사항. 업데이트할 문서를 구성하는 객체입니다. 객체는 데이터 유형에서 하나 이상의 필드를 지정할 수 있으며 각 필드에 대한 값을 포함해야 합니다. 쿼리는 지정된 필드 값을 포함하는 모든 문서와 일치합니다.

query 인수를 지정하지 않거나 일치하는 문서가 없으면 변형은 data 매개 변수에 지정된 문서를 삽입합니다.

data

필수 사항입니다. query가 기존 문서와 일치하지 않는 경우 삽입할 문서입니다. query가 일치하는 문서가 있으면 쿼리된 문서를 대체합니다. 컬렉션 스키마가 필드를 필수로 표시하는 경우 이 문서에는 해당 필드에 대한 유효한 값이 포함되어야 합니다. App Services는 query 객체의 GraphQL 유형을 해당 BSON types로 자동으로 변환합니다.

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

선택 사항. 컬렉션에서 교체할 문서를 구성하는 객체입니다. 이 객체는 데이터 유형에서 필드를 한 개 이상 지정할 수 있으며 각 필드에 대한 값을 포함해야 합니다. 이 쿼리는 지정된 필드 값을 포함하는 모든 문서와 일치합니다.

query 인수를 지정하지 않으면 이 변형이 결과 세트의 첫 번째 문서를 대체합니다. 이 첫 번째 문서는 가장 최근에 삽입된 문서일 가능성이 높지만, 이를 장담할 수는 없습니다.

data

필수 사항 쿼리된 문서를 대체하는 문서입니다. 컬렉션 스키마가 필드를 필수로 표시하는 경우 이 문서에는 해당 필드에 대한 유효한 값이 포함되어야 합니다. App Services는 InsertInput 객체의 GraphQL 유형을 해당 BSON types로 자동으로 변환합니다.

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

필수 사항입니다. 컬렉션에서 어떤 문서를 삭제할지 설정하는 객체입니다. 이 객체는 데이터 유형에서 필드를 한 개 이상 지정할 수 있으며 각 필드에 대한 값을 포함해야 합니다. 이 쿼리는 지정된 필드 값을 포함하는 모든 문서와 일치합니다.

query가 여러 문서와 일치하는 경우, 변형은 결과 세트에서 첫 번째 문서를 삭제합니다. 이 문서는 가장 최근에 삽입된 문서일 가능성이 높지만 첫 번째 문서라는 사실이 보장되지는 않습니다.

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

이 복수 문서 삭제 변형 필드는 deleteMany<Type>s(이)라는 이름을 사용합니다. 여기서 <Type>은(는) 컬렉션에 포함된 데이터 유형의 단수형 이름입니다. 이 필드는 삭제된 문서의 수를 설명하고 다음 매개변수를 허용하는 DeleteManyPayload 문서를 반환합니다.

Parameter
유형
설명

query

선택 사항. collection에서 삭제할 문서를 구성하는 객체입니다. 객체는 데이터 유형에서 하나 이상의 필드를 지정할 수 있으며 각 필드에 대한 값을 포함해야 합니다. 쿼리는 지정된 필드 값을 포함하는 모든 문서와 일치합니다.

만약 query 인수를 지정하지 않으면 변형으로 인해 컬렉션의 모든 문서가 삭제됩니다.

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

GraphQL API의 생성된 스키마에서 제공하는 유형을 사용하여 쿼리의 데이터에 페이지를 매길 수 있습니다.

Atlas GraphQL API에는 offset GraphQL 문서에서 페이지 매김에 권장하는 것과 같은 연산자가 없습니다.

대신 query, limit, 및 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 웹 SDK 설명서의 Paginate Data(데이터 페이지 매기기)를 참조하세요.

참고

이 페이지 매김 방식은 MongoDB MongoDB Server 설명서에 설명된 MongoDB 드라이버의 범위 쿼리와 유사합니다.

돌아가기

GraphQL 요청 인증