Make the MongoDB docs better! We value your opinion. Share your feedback for a chance to win $100.
Click here >
Docs Menu
Docs Home
/ /

$toObject(式演算子)

$toObject

string をオブジェクトに変換します。値を変換できない場合は、$toObject がエラーになります。値が null または欠落している場合、$toObject は null を返します。

$toObject の構文は次のとおりです。

{
$toObject: <expression>
}

$toObject 任意の有効な を受け入れます。

$toObject は次の$convert式の省略形です。

{ $convert: { input: <expression>, to: "object" } }

以下の表では、さまざまなinputタイプに対する $toObject の動作を説明しています。

入力タイプ
動作

文字列

string 内の内容に対応する document を返します。

string には、有効なJSONオブジェクトを表す文字が含まれている必要があります。

null または欠落

null を返します。

string をオブジェクトに変換する場合、$toObject は次のことを行います。

  • 有効なJSON構文が必要です。コメントと末尾のカンマは許可されていません。

  • 最上位の値がオブジェクトである必要があります。string がオブジェクトを表していない場合、$toObject はエラーを返します。

  • $oid$dateTimestamp(...) などの拡張JSON型ラッパーは解釈されません。これらは結果内に string またはネストされたオブジェクトとして残ります。

  • オブジェクトに重複するフィールド名が含まれている場合に最後の値を保持します。同じフィールドの以前の値は破棄されます。

$toObject は、値と形式に基づいて数値型を変換します。

  • 32 ビット符号付き範囲内の整数は int になります。

  • 32 ビットの範囲外、64 ビットの符号付き範囲内の整数は long になります。

  • 64 ビットの符号付き範囲外の整数は double になり、精度が失われる可能性があります。

  • 点または指数表記の数値は double になります。

次の表は、$toObject を使用して string をオブジェクトに変換する例を示しています。

結果

$toObject: "{\"a\": 1, \"b\": 2}"

{ a: 1, b: 2 }

$toObject: "{}"

{ }

$toObject: "[]"

エラー: inputは予想される型「オブジェクト」と一致しません

$toObject: "123"

エラー: inputは有効なJSONを表しません : 予期しないスタンドアロン値

$toObject: "{\"nam\\u0000e\": \"foo\"}"

エラー: input は有効なJSONを表しません : 埋め込み null バイトは無効

$toObject: "{\"name\": \"fo\\u0000o\"}"

{ name: 'fex00o' }

$toObject: "{\"a\": 1, \"b\": 2, \"a\": 3}"

{ a: 3, b: 2 }

$toObject: "{\"foo\": null}"

{ foo: null }

$toObject: "{\"foo\": false}"

{ foo: false }

$toObject: "{\"__proto__\": {\"foo\": null}}"

{ ['__proto__']: { foo: null } }

$toObject: "{\"foo\": \"NaN\"}"

{ foo: 'NaN' }

$toObject: "{\"foo\": 123}"

{ foo: 123 }

$toObject: "{\"foo\": 4294967296}"

{ foo: Long('4294967296') }

$toObject: "{\"foo\": 1.123123}"

{ foo: 1.123123 }

$toObject: "{\"foo\": 1.2e+3}"

{ foo: 1200 }

$toObject: "{\"largePos\": 18446744073709551615}"

{LargePos:18446744073709552000 }

$toObject: "{\"largeNeg\": -18446744073709551615}"

{LargeNetg: -18446744073709552000 }

$toObject: null

null

フィールドに保存されている文字列を含むコレクションを作成します。

db.jsonStrings.insertOne({
_id: 1,
config: '{"feature": true, "threshold": 10}'
})

次の集計は、config の string をオブジェクトに変換します。

db.jsonStrings.aggregate([
{
$project: {
_id: 0,
parsedConfig: { $toObject: "$config" }
}
}
])

この操作は、parsedConfig がブール値と整数値を持つネストされたdocumentであるdocumentを返します。

{ parsedConfig: { feature: true, threshold: 10 } }

注意

変換操作でエラーが発生した場合、集計操作は停止し、エラーがスローされます。この動作をオーバーライドするには、代わりに $convert を使用します。

戻る

$toLong

項目一覧