Docs Menu
Docs Home
/ /
BSON Types

JSON extendido de MongoDB (v1)

Importante

Desambiguación

La siguiente página describe MongoDB Extended JSON v1 (JSON extendido heredado). Para más información sobre MongoDB Extended JSON v2, consulte JSON extendido de MongoDB (v2).

Para los tipos de datos admitidos en mongo, consulte Tipos de datos de mongosh.

JSON solo puede representar un subconjunto de los tipos admitidos por BSON. Para preservar la información de tipos, MongoDB añade las siguientes extensiones al formato JSON:

La representación utilizada para los distintos tipos de datos depende del contexto en el que se analiza el JSON.

Los siguientes controladores admiten JSON extendido v1.0 (heredado):

  • C#

  • Ruby

Nota

El controlador C# 3.0 y posteriores no admiten el modo estricto pero sí el modo shell.

Para los otros controladores, consulta MongoDB Extended JSON (v2).

Lo siguiente puede analizar representaciones en modo estricto con reconocimiento de la información de tipo.

Otros analizadores JSON, incluido el shell, pueden analizar representaciones de mongo modo estricto como pares clave/valor, pero sin reconocer la información de tipo.

Lo siguiente puede analizar representaciones en mongo modo shell con reconocimiento de la información de tipo.

  • mongoimport versión 4.0 y anteriores

  • --query Opción de varias herramientas MongoDB

  • mongo Shell

Antes de la 4.2 versión, genera datos en modo estricto de MongoDB Extendedmongoexport JSON1 v.

Antes de la 4.2 versión, generaba salidabsondump en mongo modo shell.

A continuación se presentan los tipos de datos BSON y las representaciones asociadas en modo estricto y modo shell mongo.

data_binary
Modo estricto
mongo Modo Shell
{ "$binary": "<bindata>", "$type": "<t>" }
BinData ( <t>, <bindata> )

Donde los valores son los siguientes:

  • <bindata> es la representación base64 de una cadena binaria.

  • <t> Es una representación de un solo byte que indica el tipo de dato. En modo estricto, es una cadena hexadecimal y en modo Shell, un entero. Consulte la documentación extendida de bson: http://bsonspec.org/spec.html

data_date
Modo estricto
mongo Modo Shell
{ "$date": "<date>" }
new Date ( <date> )

En modo estricto, <date> es un8601 formato de fecha ISO- con un campo de zona horaria obligatorio después de la YYYY-MM-DDTHH:mm:ss.mmm<+/-Offset> plantilla.

En el modo Shell, <date> es la representación JSON de un 64entero con signo de bit que indica la cantidad de milisegundos desde la época UTC.

data_timestamp
Modo estricto
mongo Modo Shell
{ "$timestamp": { "t": <t>, "i": <i> } }
Timestamp( <t>, <i> )

Donde los valores son los siguientes:

  • <t> es la representación JSON de un entero sin signo de 32bits para los segundos desde la época.

  • <i> es un entero sin signo de 32bits para el incremento.

data_regex
Modo estricto
mongo Modo Shell
{ "$regex": "<sRegex>", "$options": "<sOptions>" }
/<jRegex>/<jOptions>

Donde los valores son los siguientes:

  • <sRegex> es una cadena de caracteres JSON válidos.

  • <jRegex> es una cadena que puede contener caracteres JSON válidos y caracteres de comillas dobles sin escape ("), pero no puede contener caracteres de barra diagonal sin escape (/).

  • <sOptions> es una cadena que contiene las opciones de expresiones regulares representadas por las letras del alfabeto.

  • <jOptions> Es una cadena que solo puede contener los caracteres «g», «i», «m» y «s» (añadidos en v1.9). Dado que las representaciones JavaScript y mongo Shell admiten un rango limitado de opciones, cualquier opción no conforme se descartará al convertir a esta representación.

data_oid
Modo estricto
mongo Modo Shell
{ "$oid": "<id>" }
ObjectId( "<id>" )

Donde los valores son los siguientes:

  • <id> es una cadena hexadecimal de 24caracteres.

data_ref
Modo estricto
mongo Modo Shell
{ "$ref": "<name>", "$id": "<id>" }
DBRef("<name>", "<id>")

Donde los valores son los siguientes:

  • <name> es una cadena de caracteres JSON válidos.

  • <id> es cualquier tipo JSON extendido válido.

data_undefined
Modo estricto
mongo Modo Shell
{ "$undefined": true }
undefined

La representación del tipo indefinido de JavaScript/BSON.

No se puede usar undefined en documentos de consulta. Considere el siguiente documento insertado en la people colección mediante el shell mongo heredado:

db.people.insertOne( { name : "Sally", age : undefined } )

Las siguientes consultas devuelven un error:

db.people.find( { age : undefined } )
db.people.find( { age : { $gte : undefined } } )

Sin embargo, puedes consultar valores no definidos usando, como $type en:

db.people.find( { age : { $type : 6 } } )

Esta consulta devuelve todos los documentos para los cuales el campo age tiene el valor undefined.

Importante

El tipo BSON indefinido está obsoleto. almacena un valor nulo en sumongosh lugar.

Por ejemplo, use el mismo código para insertar un documento en y mongosh mongo en el shell heredado:

db.people.insertOne( { name : "Sally", age : undefined } )

Los documentos resultantes son diferentes:

{ "name" : "Sally", "age" : null }
{ "name" : "Sally", "age" : undefined }
data_minkey
Modo estricto
mongo Modo Shell
{ "$minKey": 1 }
MinKey

Representación del tipo de dato BSON de MinKey que se compara con valores inferiores a los de los demás tipos.Consulte Comparación/Orden de ordenación para obtener más información sobre el orden de comparación de los tipos BSON.

data_maxkey
Modo estricto
mongo Modo Shell
{ "$maxKey": 1 }
MaxKey

Representación del tipo de dato MaxKey BSON que se compara mejor que todos los demás tipos.Consulte Comparación/Orden de ordenación para obtener más información sobre el orden de comparación de los tipos BSON.

data_numberlong
Modo estricto
mongo Modo Shell
{ "$numberLong": "<number>" }
Long( "<number>" )

NumberLong Es un 64 entero con signo de bits. En el mongo shell, debe usar comillas para insertar un; de lo contrario,NumberLong la operación generará un error.

Por ejemplo, los siguientes comandos intentan insertar 9223372036854775807 como NumberLong con y sin comillas alrededor del valor entero:

db.json.insertOne( { longQuoted : Long("9223372036854775807") } )
db.json.insertOne( { longUnQuoted : Long(9223372036854775807) } )

La línea resaltada produce un error en el shell heredado. La inserción se realiza mongo correctamente mongosh en.

data_numberdecimal
Modo estricto
mongo Modo Shell
{ "$numberDecimal": "<number>" }
Decimal128( "<number>" )

NumberDecimal Es un decimal de alta precisión. Debe incluir comillas; de lo contrario, el número de entrada se considerará doble, lo que provocará pérdida de datos.

Por ejemplo, los siguientes comandos insertan 123.40 como NumberDecimal con y sin comillas alrededor del valor:

db.json.insertOne( { decimalQuoted : Decimal128("123.40") } )
db.json.insertOne( { decimalUnQuoted : Decimal128(123.40) } )

Al recuperar los documentos, el valor de decimalUnQuoted ha cambiado, mientras que decimalQuoted conserva su precisión especificada:

db.json.find()
{ "_id" : ObjectId("596f88b7b613bb04f80a1ea9"), "decimalQuoted" : Decimal128("123.40") }
{ "_id" : ObjectId("596f88c9b613bb04f80a1eaa"), "decimalUnQuoted" : Decimal128("123.400000000000") }

Importante

Este comportamiento de inserción es diferente mongosh en.

El formato de cadena sin comillas, Decimal128(123.40), está obsoleto. La inserción se realiza correctamente, pero también genera una advertencia.

El formato de cadena entre comillas Decimal128.fromStringWithRounding("123.40") almacena el valor como 123.4. Se omite el 0 final.

Volver

JSON extendido (v2)

En esta página