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

$type (operador de expresi贸n)

$type

Devuelve una string que especifica el Tipo BSON del argumento.

$type tiene la siguiente sintaxis de expresi贸n de operador:

{ $type: <expression> }

El argumento puede ser cualquier expresi贸nv谩lida.

Tip

  • $isNumber - comprueba si el argumento es un n煤mero.

  • $type (Query) - filtra campos seg煤n el tipo BSON.

A diferencia del operador del query $type, que empareja los elementos de la arreglo en funci贸n de su tipo BSON, el operador de agregaci贸n $type no examina los elementos de la arreglo. En cambio, cuando se pasa un arreglo como argumento, el operador de agregaci贸n $type devuelve el tipo del argumento, es decir, "array".

Si el argumento es un campo que falta en el documento de entrada, $type devuelve la cadena "missing".

La siguiente tabla muestra la $type salida para varios tipos comunes de expresiones:

Ejemplo
Resultados

{ $type: "a" }

"string"

{ $type: /a/ }

"regex"

{ $type: 1 }

"double"

{ $type: Long(627) }

"long"

{ $type: { x: 1 } }

"object"

{ $type: [ [ 1, 2, 3 ] ] }

"array"

Nota

En el caso de un arreglo literal como [ 1, 2, 3 ], encierre la expresi贸n en un conjunto externo de corchetes de arreglo para evitar que MongoDB interprete [ 1, 2, 3 ] como una lista de argumentos con tres argumentos (1, 2, 3). Envolver el arreglo [ 1, 2, 3 ] en una expresi贸n $literal logra el mismo resultado.

Consulta formas de sintaxis de expresiones de operador para obtener m谩s informaci贸n.

Tipo
N煤mero
Alias
notas

Double

1

"double"

String

2

"string"

Objeto

3

"objeto"

Arreglo

4

"arreglo"

Datos binarios

5

"binData"

Indefinido

6

"indefinido"

Obsoleto.

ObjectId

7

"objectId"

Booleano

8

"bool"

fecha

9

"date"

Nulo

10

"null"

Expresi贸n regular

11

"regex"

DBPointer

12

"dbPointer"

Obsoleto.

JavaScript

13

"javascript"

S铆mbolo

14

"symbol"

Obsoleto.

JavaScript con 谩mbito

15

"javascriptWithScope"

Obsoleto.

entero de 32 bits

16

"int"

Marca de tiempo

17

"timestamp"

entero de 64 bits

18

"long"

Decimal128

19

"Decimal"

Min key

-1

"minKey"

Clave m谩xima

127

"maxKey"

Si el argumento es un campo que falta en el documento de entrada, $type devuelve la cadena "missing".

Este ejemplo usa una colecci贸n llamada coll con los siguientes documentos:

db.coll.insertMany( [
{ _id: 0, a : 8 },
{ _id: 1, a : [ 41.63, 88.19 ] },
{ _id: 2, a : { a : "apple", b : "banana", c: "carrot" } },
{ _id: 3, a : "caribou" },
{ _id: 4, a : Long(71) },
{ _id: 5, a : null },
{ _id: 6 }
] )

La siguiente operaci贸n de agregaci贸n utiliza el operador $type para mostrar el tipo de campo a de todos los documentos como parte de la etapa $project.

db.coll.aggregate([{
$project: {
a : { $type: "$a" }
}
}])
[
{ _id: 0, "a" : "int" },
{ _id: 1, "a" : "array" },
{ _id: 2, "a" : "object" },
{ _id: 3, "a" : "string" },
{ _id: 4, "a" : "long" },
{ _id: 5, "a" : "null" },
{ _id: 6, "a" : "missing" }
]

Expresiones no admite el operador $exists. Para evaluar si un campo existe o no en una expresi贸n, puede utilizar el tipo missing.

La siguiente operaci贸n de agregaci贸n utiliza el tipo missing para a帽adir un campo a a los documentos de la colecci贸n coll (mencionada anteriormente) que carecen del campo a. Observa que un documento donde a: null no es igual a un documento donde falta el campo a.

db.coll.aggregate([
{
$addFields: {
a: {
$cond: {
if: { $eq: [{ $type: "$a" }, "missing"] },
then: [],
else: "$a"
}
}
}
}
])
[
{ _id: 0, a : 8 },
{ _id: 1, a : [ 41.63, 88.19 ] },
{ _id: 2, a : { a : "apple", b : "banana", c: "carrot" } },
{ _id: 3, a : "caribou" },
{ _id: 4, a : Long(71) },
{ _id: 5, a : null },
{ _id: 6, a : [] }
]

Volver

$trunc

En esta p谩gina