En MongoDB, el $type
El operador de canalización de agregación devuelve el tipo BSON de su argumento.
Puede usarlo para averiguar el tipo de un campo dado.
Ejemplo
Supongamos que tenemos una colección llamada cats
con el siguiente documento:
{ "_id" : ObjectId("60173c09c8eb4369cf6ad9e0"), "name" : "Scratch", "born" : ISODate("2021-01-03T23:30:15.123Z"), "weight" : 30 }
Podemos usar el siguiente código para devolver los tipos de esos campos:
db.cats.aggregate(
[
{
$project:
{
_id: { $type: "$_id" },
name: { $type: "$name" },
born: { $type: "$born" },
weight: { $type: "$weight" }
}
}
]
).pretty()
Resultado:
{ "_id" : "objectId", "name" : "string", "born" : "date", "weight" : "double" }
Ejemplo 2
Aquí hay otro ejemplo que contiene varios campos de diferentes tipos de BSON.
Tenemos una colección llamada types
con el siguiente documento:
{ "_id" : ObjectId("601738d7c8eb4369cf6ad9de"), "double" : 123.75, "string" : "123", "boolean" : true, "date" : ISODate("2020-12-31T23:30:15.123Z"), "integer" : 123, "long" : NumberLong(123), "decimal" : NumberDecimal("123.75"), "object" : { "a" : 1 }, "array" : [ 1, 2, 3 ] }
A los efectos de este artículo, he nombrado cada campo para reflejar su tipo BSON.
Ahora podemos usar el siguiente código para devolver los tipos de esos campos:
db.types.aggregate(
[
{
$project:
{
_id: { $type: "$_id" },
double: { $type: "$double" },
string: { $type: "$string" },
boolean: { $type: "$boolean" },
date: { $type: "$date" },
integer: { $type: "$integer" },
long: { $type: "$long" },
decimal: { $type: "$decimal" },
object: { $type: "$object" },
array: { $type: "$array" }
}
}
]
).pretty()
Resultado:
{ "_id" : "objectId", "double" : "double", "string" : "string", "boolean" : "bool", "date" : "date", "integer" : "int", "long" : "long", "decimal" : "decimal", "object" : "object", "array" : "array" }
Filtrado por tipo
También hay un $type
operador de consulta de elemento que le permite filtrar una colección de documentos según el tipo BSON.
Buscar números
Si solo desea verificar si un valor es un número, consulte MongoDB $isNumber
.