Docs Menu
Docs Home
/ /
Atlas App Services
/ /

スキーマ タイプ

項目一覧

  • すべてのスキーマ タイプ
  • BSON types
  • 配列
  • ブール値
  • 混合
  • 番号
  • オブジェクト
  • ObjectId
  • 文字列
  • UUID
  • バイナリ データ
  • Realm データベースのタイプ
  • カウンター
  • セット
  • Dictionary
  • BSON 型の辞書
  • 混合型 BSON types の辞書
  • 埋め込みオブジェクトの辞書
  • 地理空間データ
  • GeoJSON ポイント

次のフィールドは、BSON types に関係なくすべての BSON スキーマで使用できます。

{
"bsonType": "<BSON Type>" | ["<BSON Type>", ...],
"type": "<JSON Type>" | ["<JSON Type>", ...],
"enum": [<Value 1>, <Value 2>, ...],
"description": "<Descriptive Text>,
"title": "<Short Description>"
}
フィールド名
説明
bsonType

スキーマが記述するプロパティの BSON types。プロパティの値が複数のタイプになる場合は、BSON types の配列を指定します。type フィールドとは併用できません。

BSON types には、すべての JSON types と、名前で参照可能なその他の型が含まれます。

  • double

  • string

  • object

  • array

  • objectId

  • date

  • bool

  • null

  • regex

  • int

  • timestamp

  • long

  • decimal

  • uuid

  • binData

  • mixed

type

スキーマが記述するプロパティの JSON タイプ。プロパティの値が複数のタイプになる場合は、JSON タイプの配列を指定します。bsonType とは併用できません。

重要

Atlas App Services は、JSON schema の基準との互換性を維持するために、type フィールドをサポートしています。ただし、代わりに bsonType フィールドの使用をお勧めしています。BSON types はすべての JSON schema 型を含み、さらに多くのデータ型をサポートします。

次の標準 JSON タイプを使用できます。

  • object

  • array

  • number

  • boolean

  • string

  • null

注意

MongoDB の JSON schema 実装では integer JSON タイプはサポートされません。そのため、int または long を値とする bsonType フィールドを代用してください。

enum
スキーマの記述データのすべての有効値を含む配列。
title
スキーマがモデル化するデータの短いタイトルまたは名前。このフィールドはメタデータ目的でのみ使用され、スキーマ検証には影響しません。
description
スキーマがモデル化するデータの詳細な説明。このフィールドはメタデータ目的でのみ使用され、スキーマ検証には影響しません。

arrayには特定の型の複数の値が含まれています。 BSONarray スキーマは標準の JSON schema 配列 を使用 形式。

{
"bsonType": "array",
"items": <Schema Document> | [<Schema Document>, ...],
"additionalItems": <boolean> | <Schema Document>,
"maxItems": <integer>,
"minItems": <integer>,
"uniqueItems": <boolean>
}
フィールド名
説明
items
すべての配列項目のスキーマ、または順序が重要なスキーマの配列。
additionalItems

デフォルト: true

true の場合、配列にはスキーマで定義されていない追加の値が含まれることがあります。false の場合、items 配列に明示的にリストされている値のみが配列に表示されます。

値がスキーマ オブジェクトの場合、スキーマに対して追加フィールドを検証する必要があります。

注意

additionalItems フィールドは、配列値のある items フィールドを持つ配列スキーマにのみ影響します。items フィールドが単一のスキーマ オブジェクトである場合、additionalItems による影響はありません。

maxItems
配列の最大長。
minItems
配列の最小長。
uniqueItems

デフォルト: false

true の場合、配列内の各項目は一意である必要があります。false の場合、複数配列項目は同一である可能性があります。

Tip

ユニークな配列はセット

Set をモデル化するには、uniqueItemstrue に設定した状態で、array スキーマ タイプを使用します。

booltrue または false のいずれかです。

{ "bsonType": "bool" }

注意

2024 年 5 月 28 日の後に作成されたアプリ

年 5 月 日以降に作成された App Services アプリは、混合データのコレクション(配列と辞書)を混合データ プロパティに2024でき28 。 コレクション内に他のコレクションをネストできるため、厳密なデータモデルを定義しなくても、JSON や MongoDB ドキュメントなどの複雑なデータ構造を保存できます。

この機能を Atlas Device SDK で使用するには、次のいずれかの最小 SDK バージョンを使用する必要があります。

  • C++ SDK: バージョン TDB

  • Flutter SDK: v 2.0.0以降

  • Kotlin SDK: v 2.0.0以降

  • .NET SDK: v 12.2.0以降

  • Node.js SDK: v 12.9.0以降

  • React Native SDK: v 12.9.0以降

  • Swift SDK: v10.51.0 以降

この機能は Java SDK ではサポートされていません

サポートされている SDK を使用して既存のアプリでこの機能を有効にする方法の詳細については、 サポートにお問い合わせください 。

mixed フィールドには任意のスキーマ タイプを含むことができます。ただし、埋め込みオブジェクトセット、または SDK でサポートされている counter は除きます。App Services ではドキュメント間で一貫したタイプが強制されないため、2 つの異なるドキュメントで値のタイプが異なる場合があります。

混合フィールドには、混合データの配列辞書を格納できます。Sync はそれぞれを MongoDB の配列とオブジェクトとして変換します。これらの混合データのコレクションには、最大深度が 100 レベルの他の混合データのコレクションも含めることができます。この柔軟性を活用して、変数 JSON データや複雑な MongoDB ドキュメントなど、事前定義されたスキーマに適さない複雑なデータ構造を保存できます。

混合フィールドは関係を表すこともできます。Sync はこれらの関係を DBRef として MongoDB に変換し、データベース名、コレクション名、リンクのプライマリキーを保持します。

{ "bsonType": "mixed" }

number では、通常、あるタイプの数値が構成されます。BSON schema は、整数、浮動少数、小数を定義するための追加のタイプで JSON schema 数値 を拡張したものです。

{
"bsonType": "number" | "int" | "long" | "double" | "decimal",
"multipleOf": <number>,
"maximum": <number>,
"exclusiveMaximum": <boolean>,
"minimum": <number>,
"exclusiveMinimum": <boolean>
}
フィールド名
説明
multipleOf
フィールド値の約数。たとえば、multipleOf3 に設定されている場合、6 は有効な値ですが、7 は有効ではありません。
maximum
数値の最大値。
exclusiveMaximum

デフォルト: false

true の場合、フィールド値は maximum 値未満である必要があります。false の場合、フィールド値は maximum 値と等しくなることもあります。

minimum
数値の最小値。
exclusiveMinimum

デフォルト: false

true の場合、フィールド値はminimum 値を超える必要があります。false の場合、フィールド値は minimum 値と等しくなることもあります。

object はそれぞれが型指定された値を持つ string キーで構造化されたオブジェクトです。オブジェクトは、同期済み Realm 内の オブジェクトと埋め込みオブジェクト、および MongoDB でマップ先となるドキュメントを表します。

{
"bsonType": "object",
"title": "<Type Name>",
"required": ["<Required Field Name>", ...],
"properties": {
"<Field Name>": <Schema Document>
},
"minProperties": <integer>,
"maxProperties": <integer>,
"patternProperties": {
"<Field Name Regex>": <Schema Document>
},
"additionalProperties": <boolean> | <Schema Document>,
"dependencies": {
"<Field Name>": <Schema Document> | ["<Field Name>", ...]
}
}
フィールド名
説明
required
ドキュメントに含める必要があるフィールド名の配列。
title
オブジェクトの種類。Atlas App Services はこの値を使用して、GraphQL API のドキュメントの種類に名前を付けます。(GraphQL は廃止予定。詳しくはこちら
properties
各フィールドが名前によって親オブジェクトのフィールドにマップされるオブジェクト。各フィールドの値は、フィールドの値を構成するスキーマ ドキュメントです。
minProperties
オブジェクトで許可されるフィールドの最小数。
maxProperties
オブジェクトで許可されるフィールドの最大数。
patternProperties
マッピングする親オブジェクトのすべてのフィールドにマッピングする正規表現文字列で、各フィールドが構成されるオブジェクト。各フィールドの値は、一致するフィールドの値を構成するスキーマ ドキュメントです。
additionalProperties

デフォルト: true

true の場合、ドキュメントにはスキーマで定義されていない追加フィールドが含まれる可能性があります。false の場合、スキーマで明示的に定義されているフィールドのみがドキュメントに表示されます。

値がスキーマ オブジェクトの場合、スキーマに対して追加フィールドを検証する必要があります。

dependencies
プロパティとスキーマの依存関係を指定します。

注意

オブジェクトスキーマ タイプでの辞書のモデル化

辞書をモデル化するには、additionalProperties が辞書に格納されている値のオブジェクトタイプに設定されている状態で objectスキーマ タイプを使用します。

objectId は、BSON オブジェクトの 12 バイトの識別子です。ObjectId 値は、MongoDB コレクション内のドキュメントまたは同期された Realm 内のオブジェクトのユニークな _id 値として最もよく使用されます。

{ "bsonType": "objectId" }

string は一連の文字としてエンコードされたテキストです。BSON string スキーマは標準の JSON スキーマ文字列 形式を使用します。

{
"bsonType": "string",
"maxLength": <integer>,
"minLength": <integer>,
"pattern": "<Regular Expression>"
}
フィールド名
説明
maxLength
文字列の最大文字数。
minLength
文字列の最小文字数。
pattern
文字列の値と一致する必要のある正規表現文字列。

uuid(汎用一意識別子)は標準化された 16 バイトのユニークなオブジェクト識別子です。

{ "bsonType": "uuid" }

binData は非構造化バイナリ データであり、バイナリBSON 型 にマップします。サブタイプ 0 を常に使用します。

{ "bsonType": "binData" }

Realm データベースは Atlas Device SDK に固有のタイプです。

SDK 固有のタイプとその定義方法の詳細については、「SDK ドキュメント」を参照してください。

counter は、値をインクリメントまたはデクリメント可能な特殊な数値型であり、App Services の long number 型にマッピングします。

{ "bsonType": "long" }

counter データ型がサポートされるのは次の SDK のみです。

set はユニークな値のコレクションです。

set schema は、uniqueItemstrue に設定されている array スキーマです。

{
"bsonType": "array",
"uniqueItems": true,
"items": {
"bsonType": "long"
}
}

辞書は、特定の type の値とペアになった動的なユニークな string キーのコレクションです。機能的には、フィールド名が事前に定義されていないオブジェクトまたはドキュメントです。

辞書スキーマは object スキーマで、properties は定義されておらず、additionalProperties 値は辞書の値の type 向けスキーマです。

BSON 型の値を含む辞書を保存するには、additionalProperties を BSON 型のスキーマに設定します。

{
"bsonType": "object",
"additionalProperties": {
"bsonType": "string"
}
}
}

混合値を含む辞書を保存するには、additionalPropertiestrue に設定します。

{
"bsonType": "object",
"additionalProperties": true
}
}

あるいは、次のとおり完全な mixed スキーマを定義できます。

{
"bsonType": "object",
"additionalProperties": {
"bsonType": "mixed"
}
}
}

埋め込みオブジェクト値を含む辞書を保存するには、title フィールドを埋め込みオブジェクトの type 名に設定して、object スキーマを定義します。

{
"bsonType": "object",
"additionalProperties": {
"bsonType": "object",
"title": “Address”,
"properties": {
"streetNumber": { "bsonType": "string" },
"street": { "bsonType": "string" },
"city": { "bsonType": "string" },
"province": { "bsonType": "string" },
"country": { "bsonType": "string" },
"postalCode": { "bsonType": "string" }
}
}
}

地理空間データでは、地表の地点とその他のデータが記述されます。App Services には地理空間型データは組み込まれておらず、代わりに、標準的な GeoJSON オブジェクトを使用して地理データをモデル化します。

GeoJSON ポイント(GeoPoint) は、地上の単一のロケーションです。GeoPoint スキーマは string タイプの必須 type フィールドである必要があり、常に「Point」に設定されます。

また、double 型の配列である coordinates フィールドも指定する必要があります。次のように、coordinates 配列には 2 つ目までの double 型の値が必ず含まれている必要があり、3 つ目の値も 1 つ含めることができます。

  • 最初の double 型の値は地点の経度で、範囲は -180 から 180 です。

  • 2 つ目の値は緯度で、範囲は -90 から 90 です。

  • 任意の 3 つ目の値は、地点の標高/高度をメートル単位で表します。Atlas はクエリの実行時にこの値を無視します。

注意

ユーザーは Device Sync スキーマで必要に応じて配列を設定できないため、座標フィールドの有無と要件を満たしているかどうかは Sync サーバーによって確認されます。

地理空間データは、Device Sync を使用していない場合、通常の地理空間演算子を使用してクエリできます。ただし、Atlas Device Sync を使用している場合は、GeoPoint オブジェクトに次のルールも適用されます。

  • タイプは objectである必要があります。

  • 別のタイプに埋め込む必要があります。

  • double である限り、coordinates 配列内で別の値が許容されます。

  • GeoPoint オブジェクトの追加プロパティも許可されます。

以下に示しているのは、「location」という名前の GeoPoint プロパティが埋め込まれたオブジェクトの Device Sync スキーマです。

{
"title": "MyObject",
"properties": {
"_id": {
"bsonType": "objectId"
},
"location": {
"bsonType": "object",
"required": [ "type" ],
"properties": {
"type": {
"bsonType": "string",
},
"coordinates": {
"bsonType": "array",
"items": {
"bsonType": "double"
}
}
}
}
}
}

以下のコード ブロックはスキーマに従ったドキュメントを示しており、「location」という名前の GeoPoint オブジェクトが 1 つ埋め込まれています。

{
"_id": { "$oid": "65039d09fe4e46dddee31a3f" },
"location": {
"type": "Point",
"coordinates": [-122.4, 48.12, 23.0]
}
}

戻る

スキーマの削除