MongoDB 拡張 JSON(v2)
重要
曖昧さ回避
次のページでは、 MongoDB 拡張 JSON v 2について説明します。 レガシー MongoDB 拡張 JSON v 1の詳細については、 MongoDB 拡張 JSON(v 1 )を参照してください。
でサポートされているデータ型については、mongosh
「 mongoshデータ型 」を参照してください。
JSON は、BSON でサポートされている型のサブセットのみを直接表すことができます。型情報を保持するために、MongoDB は JSON 形式に次の拡張機能を追加します。
- 標準モード
- 文字列と相互運用性を犠牲にして、型の保存を重視した文字列形式。つまり、標準から BSON への変換では、特定のケースを除いて、通常は型情報が保持されます。
- 緩和モード
- 型の保存を犠牲にして、読みやすさと相互運用性を重視した文字列形式。つまり、緩和された形式から BSON への変換では、型情報が失われる可能性があります。
どちらの形式も JSON RFC に準拠しています。また、さまざまな MongoDB ドライバーとツールによって解析可能です。
MongoDB 拡張 JSON v2 の使用法
ドライバー
次のドライバーは、拡張 JSON v2.0 を使用します
|
|
|
レガシー MongoDB Extended JSON v1 を使用する C# および Ruby については、「MongoDB 拡張 JSON(v1)」を参照してください。
MongoDB データベース ツール
バージョン 4.2 以降
バイナリ | 変更点 |
---|---|
拡張 JSON v2.0(標準モード)形式を使用します。 | |
拡張 JSON v 2.0を使用する メタデータの (標準モード)形式。 拡張 JSON v 2.0をサポートする 一般に、 | |
Creates output data in Extended JSON v2.0 (Relaxed mode) by
default. Creates output data in Extended JSON v2.0 (Canonical mode) if
used with --jsonFormat . | |
Expects import data to be in Extended JSON v2.0 (either
Relaxed or Canonical mode) by default. Can recognize data that is in Extended JSON v1.0 format if the option
--legacy is specified.一般に、 |
BSON データ型と関連表現
以下は、一般的な BSON データ型と、それに関連する Canonical および Relaxed での表現です。
完全なリストは ここにあります。
標準 | 緩和 | ||
---|---|---|---|
|
|
ここで、配列要素は次のとおりです。
<elements>
配列要素は拡張 JSON を使用します。
空の配列を指定するには、コンテンツ
[ ]
を省略します。
標準 | 緩和 | |||||||
---|---|---|---|---|---|---|---|---|
|
|
ここで、値は次のとおりです。
"<payload>"
Base64 エンコード(パディングは " = ")のペイロード文字列。
"<t>"
BSON バイナリ サブタイプに対応する 1 文字または 2 文字の 16 進文字列。使用可能なサブタイプについては、拡張 bson ドキュメント(http://bsonspec.org/spec.html)を参照してください。
1970 年から 9999 年までの日付(以下を含みます):
標準 | 緩和 | ||
---|---|---|---|
|
|
1970 年以前または 9999 年以降の日付の場合:
標準 | 緩和 | ||
---|---|---|---|
|
|
ここで、値は次のとおりです。
"<millis>"
文字列としての 64 ビット符号付き整数。この値は、エポックに対するミリ秒単位を表します。
"<ISO-8601 Date/Time Format>"
ISO-8601 インターネット日付や時刻形式 の日付を文字列として指定します。
日付や時刻の最大時間精度はミリ秒です。
小数部がゼロ以外の場合、小数秒の小数点は正確に 3 桁になります。
それ以外の場合、小数秒がゼロの場合は省略してください。
バージョン 3.4 で追加。
標準 | 緩和 | ||
---|---|---|---|
|
|
ここで、値は次のとおりです。
"<number>"
高精度の 10 進数 string として表示される。
標準 | 緩和 | ||
---|---|---|---|
|
|
ドキュメントのコンテンツは次のとおりです。
<content>
名称: 拡張 JSON を使用する値のペア。
空のドキュメントを指定するには、コンテンツ
{ }
を省略します。
有限数の場合:
標準 | 緩和 | ||
---|---|---|---|
|
|
無限数または NAN の場合:
標準 | 緩和 | ||
---|---|---|---|
|
|
ここで、値は次のとおりです。
"<decimal string>"
64 ビットの符号付き浮動小数点を文字列として表します。
<non-integer number>
非整数。整数は double ではなく integer として解析されます。
標準 | 緩和 | ||
---|---|---|---|
|
|
ここで、値は次のとおりです。
"<number>"
文字列としての 64 ビット符号付き整数。
<integer>
64 ビットの符号付き整数。
標準 | 緩和 | ||
---|---|---|---|
|
|
ここで、値は次のとおりです。
"<number>"
文字列としての 32 ビット符号付き整数。
<integer>
32 ビットの符号付き整数。
標準 | 緩和 | ||
---|---|---|---|
|
|
MaxKey BSON データ型は、他のすべての型よりも高位にあります。BSON types の比較順序について詳しくは、「比較/並べ替え順序」を参照してください。
標準 | 緩和 | ||
---|---|---|---|
|
|
MaxKey BSON データ型は、他のすべての型よりも低位にあります。BSON types の比較順序について詳しくは、「比較/並べ替え順序」を参照してください。
標準 | 緩和 | ||
---|---|---|---|
|
|
ここで、値は次のとおりです。
"<ObjectId bytes>"
ObjectId バイトを表す 24 文字のビッグ エンディアンの文字列。
標準 | 緩和 | |||||||
---|---|---|---|---|---|---|---|---|
|
|
ここで、値は次のとおりです。
"<regexPattern>"
正規式パターンに対応する string。string には有効な JSON 文字とエスケープされていない二重引用符(
"
)文字を含めることができますが、エスケープされていないスラッシュ(/
)文字を含めることはできません。
"<options>"
BSON 正規表現オプションを指定する string。 オプションはアルファベット順に指定する必要があります。 サポートされているオプションの詳細については、
$options
を参照してください。
標準 | 緩和 | ||
---|---|---|---|
|
|
ここで、値は次のとおりです。
<t>
エポックからの秒数の正の整数。
<i>
増分を表す正の整数。
例
フィールド名の例 | 標準形式 | 緩和形式 |
---|---|---|
" _id: " | {"$oid":"5d505646cf6d4fe581014ab2"} | {"$oid":"5d505646cf6d4fe581014ab2"} |
"arrayField": | ["hello",{"$numberInt":"10"}] | ["hello",10] |
"dateField": | {"$date":{"$numberLong":"1565546054692"}} | {"$date":"2019-08-11T17:54:14.692Z"} |
"dateBefore1970": | {"$date":{"$numberLong":"-1577923200000"}} | {"$date":{"$numberLong":"-1577923200000"}} |
"decimal128Field": | {"$numberDecimal":"10.99"} | {"$numberDecimal":"10.99"} |
"documentField": | {"a":"hello"} | {"a":"hello"} |
"doubleField": | {"$numberDouble":"10.5"} | 10.5 |
"infiniteNumber" | {"$numberDouble":"Infinity"} | {"$numberDouble":"Infinity"} |
"int32field": | {"$numberInt":"10"} | 10 |
"int64Field": | {"$numberLong":"50"} | 50 |
"minKeyField": | {"$minKey":1} | {"$minKey":1} |
"maxKeyField": | {"$maxKey":1} | {"$maxKey":1} |
"regexField": | {"$regularExpression":{"pattern":"^H","options":"i"}} | {"$regularExpression":{"pattern":"^H","options":"i"}} |
"timestampField": | {"$timestamp":{"t":1565545664,"i":1}} | {"$timestamp":{"t":1565545664,"i":1}} |