Menu Docs

$type (agregação)

$type

Retorna uma string que especifica o tipo JSON do argumento.

$type tem a seguinte sintaxe de expressão do operador:

{ $type: <expression> }

O argumento pode ser qualquer expressãoválida.

Veja também:

Ao contrário do operador de query $type, que corresponde a elementos de array com base em seu tipo BSON, o operador de agregação $type não examina elementos de array. Em vez disso, quando uma array é passada como seu argumento, o operador de agregação $type retorna o tipo do argumento, ou seja, "array".

Se o argumento for um campo ausente no documento de entrada, $type retornará a string "missing".

A tabela a seguir mostra a saída $type para vários tipos comuns de expressões:

Exemplo
Resultados

{ $type: "a" }

"string"

{ $type: /a/ }

"regex"

{ $type: 1 }

"double"

{ $type: NumberLong(627) }

"long"

{ $type: { x: 1 } }

"object"

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

"array"

Observação

No caso de uma array literal, como [ 1, 2, 3 ], coloque a expressão em um conjunto externo de colchetes para evitar que o MongoDB analise [ 1, 2, 3 ] como uma lista de argumentos com três argumentos (1, 2, 3). Agrupar a array [ 1, 2, 3 ] em uma expressão $literal obtém o mesmo resultado.

Consulte Formulários de sintaxe de expressão do operador para mais informações.

Tipo
Número
Alias
Notas

Double

1

"double"

String

2

"string"

Objeto

3

"objeto"

Array

4

"array"

Dados binários

5

"binData"

Indefinido

6

" indefinido "

Obsoleto.

ObjectId

7

"objectId"

Boolean

8

"bool"

Data

9

"data"

Zero

10

"nulo"

Expressão regular

11

"regex"

DBPointer

12

"dbPointer"

Obsoleto.

JavaScript

13

"javascript"

Símbolo

14

"símbolo"

Obsoleto.

Inteiro de bits

16

"int"

Timestamp

17

"timestamp"

Inteiro de 64 bits

18

"long"

Decimal128

19

"decimal"

Min key

-1

"minKey"

Tecla máxima

127

"maxKey"

Se o argumento for um campo ausente no documento de entrada, $type retornará a string "missing".

Este exemplo utiliza uma coleção denominada coll com os seguintes documentos:

{ _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 : NumberLong(71) }
{ _id: 5 }

A seguinte operação de agregação utiliza o operador $type para exibir o tipo de campo a para todos os documentos como parte do estágio $project.

db.coll.aggregate([{
$project: {
a : { $type: "$a" }
}
}])

A operação retorna o seguinte:

{ _id: 0, "a" : "double" }
{ _id: 1, "a" : "array" }
{ _id: 2, "a" : "object" }
{ _id: 3, "a" : "string" }
{ _id: 4, "a" : "long" }
{ _id: 5, "a" : "missing" }