スキーマ タイプ
項目一覧
すべてのスキーマ タイプ
次のフィールドは、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 の配列を指定します。 BSON types には、すべての JSON types と、名前で参照可能なその他の型が含まれます。
|
type | スキーマが記述するプロパティの JSON タイプ。プロパティの値が複数のタイプになる場合は、JSON タイプの配列を指定します。 重要Atlas App Services は、JSON schema の基準との互換性を維持するために、 次の標準 JSON タイプを使用できます。
注意MongoDB の JSON schema 実装では |
enum | スキーマの記述データのすべての有効値を含む配列。 |
title | スキーマがモデル化するデータの短いタイトルまたは名前。このフィールドはメタデータ目的でのみ使用され、スキーマ検証には影響しません。 |
description | スキーマがモデル化するデータの詳細な説明。このフィールドはメタデータ目的でのみ使用され、スキーマ検証には影響しません。 |
BSON types
配列
array
には特定の型の複数の値が含まれています。 BSONarray
スキーマは標準の JSON schema 配列 を使用 形式。
{ "bsonType": "array", "items": <Schema Document> | [<Schema Document>, ...], "additionalItems": <boolean> | <Schema Document>, "maxItems": <integer>, "minItems": <integer>, "uniqueItems": <boolean> }
フィールド名 | 説明 |
---|---|
items | すべての配列項目のスキーマ、または順序が重要なスキーマの配列。 |
additionalItems | デフォルト:
値がスキーマ オブジェクトの場合、スキーマに対して追加フィールドを検証する必要があります。 注意
|
maxItems | 配列の最大長。 |
minItems | 配列の最小長。 |
uniqueItems | デフォルト:
|
ブール値
bool
は true
または 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 | フィールド値の約数。たとえば、 multipleOf が 3 に設定されている場合、6 は有効な値ですが、7 は有効ではありません。 |
maximum | 数値の最大値。 |
exclusiveMaximum | デフォルト:
|
minimum | 数値の最小値。 |
exclusiveMinimum | デフォルト:
|
オブジェクト
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 | デフォルト:
値がスキーマ オブジェクトの場合、スキーマに対して追加フィールドを検証する必要があります。 |
dependencies | プロパティとスキーマの依存関係を指定します。 |
注意
オブジェクトスキーマ タイプでの辞書のモデル化
辞書をモデル化するには、additionalProperties
が辞書に格納されている値のオブジェクトタイプに設定されている状態で object
スキーマ タイプを使用します。
ObjectId
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
uuid
(汎用一意識別子)は標準化された 16 バイトのユニークなオブジェクト識別子です。
{ "bsonType": "uuid" }
バイナリ データ
binData
は非構造化バイナリ データであり、バイナリBSON 型 にマップします。サブタイプ 0 を常に使用します。
{ "bsonType": "binData" }
Realm データベースのタイプ
Realm データベースは Atlas Device SDK に固有のタイプです。
SDK 固有のタイプとその定義方法の詳細については、「SDK ドキュメント」を参照してください。
カウンター
counter は、値をインクリメントまたはデクリメント可能な特殊な数値型であり、App Services の long
number 型にマッピングします。
{ "bsonType": "long" }
counter データ型がサポートされるのは次の SDK のみです。
セット
set はユニークな値のコレクションです。
set schema は、uniqueItems
が true
に設定されている array
スキーマです。
{ "bsonType": "array", "uniqueItems": true, "items": { "bsonType": "long" } }
Dictionary
辞書は、特定の type の値とペアになった動的なユニークな string
キーのコレクションです。機能的には、フィールド名が事前に定義されていないオブジェクトまたはドキュメントです。
辞書スキーマは object
スキーマで、properties
は定義されておらず、additionalProperties
値は辞書の値の type 向けスキーマです。
BSON 型の辞書
BSON 型の値を含む辞書を保存するには、additionalProperties
を BSON 型のスキーマに設定します。
{ "bsonType": "object", "additionalProperties": { "bsonType": "string" } } }
混合型 BSON types の辞書
混合値を含む辞書を保存するには、additionalProperties
を true
に設定します。
{ "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 ポイント
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] } }