Docs Menu
Docs Home
/ /

$type (agregación)

$type

Devuelve una cadena 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ón válida.

Tip

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

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

A diferencia del $type operador de consulta, que compara elementos de una matriz según su tipo BSON, el $type operador de agregación no examina los elementos de una matriz. En cambio, al pasar una matriz como argumento, el $type operador de agregación devuelve el tipo del argumento, es"array" decir,.

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

La siguiente tabla muestra la salida para varios tipos comunes de $type 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 una matriz literal [ 1, 2, 3 ] como, encierre la expresión entre corchetes para evitar que MongoDB analice [ 1, 2, 3 ] como una lista de tres argumentos1, 2, 3 (). Encapsular la matriz [ 1, 2, 3 ] en una expresión produce el mismo $literal 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

"javascriptConÁmbito"

Obsoleto.

entero de 32 bits

16

"int"

Marca de tiempo

17

"marca de tiempo"

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, devuelve$type la "missing" cadena.

Este ejemplo utiliza 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 $type operador para mostrar el tipo de campo a para todos los documentos como parte de la $project etapa.

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

Las expresiones no admiten el $exists operador. Para evaluar si un campo existe en una expresión, puede usar el missing tipo.

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 anterior que carecen del campo a. Tenga en cuenta que un documento con a: null no es lo mismo que uno con el campo a ausente.

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