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 (operador de expresión)

$toObject

Convierte un string en un objeto. Si el valor no puede convertirse, se producen errores en $toObject. Si el valor es null o falta, $toObject devuelve null.

$toObject tiene la siguiente sintaxis:

{
$toObject: <expression>
}

$toObject takes any valid expresión.

$toObject es una abreviatura para la siguiente $convert expresión:

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

La siguiente tabla describe el comportamiento de $toObject para diferentes input:

Tipo de entrada
Comportamiento

String

Devuelve un document correspondiente al contenido dentro de la string.

La string debe contener caracteres que representen un objeto JSON válido.

Nulo o Faltante

Devuelve nulo.

Al convertir un string en un objeto, $toObject:

  • Se requiere una sintaxis JSON válida. No se permiten comentarios ni comas al final.

  • Requiere que el valor de nivel superior sea un objeto. Si la string no representa un objeto, $toObject genera errores.

  • No interpreta contenedores de tipo Extended JSON, como $oid, $date o Timestamp(...). Estos siguen siendo cadenas u objetos anidados en el resultado.

  • Conserva el último valor cuando el objeto contiene nombres de campos duplicados. Se descartan valores anteriores del mismo campo.

$toObject convierte tipos numéricos según su valor y formato:

  • Los enteros dentro del rango de 32bits con signo se convierten en int.

  • Los enteros que se encuentran fuera del rango de 32bits, pero dentro del rango de enteros con signo de 64bits, se convierten en long.

  • Los enteros fuera del rango de 64bits con signo se convierten en double, lo que puede resultar en una pérdida de precisión.

  • Los números con un punto decimal o notación exponencial se convierten en double.

La siguiente tabla muestra ejemplos de uso de $toObject para convertir cadenas en objetos:

Ejemplo
Resultados

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

{ a: 1, b: 2 }

$toObject: "{}"

{ }

$toObject: "[]"

Error: input no coincide con el tipo esperado 'objeto'

$toObject: "123"

Error: el input no representa un JSON válido: valor autónomo inesperado

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

Error: input no representa un JSON válido: byte nulo incrustado no permitido

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

{ name: 'fox00o' }

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

{ a: 3, b: 2 }

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

{ foo: null }

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

{ foo: falso }

$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}"

{ largeNeg: -18446744073709552000 }

$toObject: null

Nulo

Crea una colección con cadenas almacenadas en un campo:

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

La siguiente agregación convierte la string en config en un objeto:

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

Esta operación retorna un document en el que parsedConfig es un document anidado con un valor booleano y un valor entero:

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

Nota

Si la operación de conversión encuentra un error, la operación de agregación se detiene y genera un error. Para anular este comportamiento, use $convert en su lugar.

Volver

$toLong

En esta página