Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
El $type operador recupera documentos si un campo elegido es del tipo especificado. El operador $type es útil en la validación de datos y garantiza la coherencia entre los documentos de una colección.
Syntax
{
<field>: { $type: <BSON type number> | <string alias> }
}
Parámetros
| Parámetro | Description |
|---|---|
field |
Campo para comprobar el tipo. |
BSON type number |
Número correspondiente al tipo BSON (por ejemplo, 1 para doble, 2 para cadena). |
string alias |
Alias de cadena para el tipo BSON (por ejemplo, "doble", "cadena", "objeto", "matriz"). |
Tipos BSON comunes
| Tipo | Number | Alias | Description |
|---|---|---|---|
| Double | 1 | "double" | Número de punto flotante de 64 bits |
| String | 2 | "string" | Cadena UTF-8 |
| Objeto | 3 | "object" | Documento incrustado |
| Array | 4 | "array" | Array |
| ObjectId (identificador de objeto) | 7 | "objectId" | ObjectId (identificador de objeto) |
| Boolean | 8 | "bool" | Boolean |
| Fecha | 9 | "date" | Fecha |
| Null | 10 | "null" | Valor NULL |
| Entero de 32 bits | 16 | "int" | Entero de 32 bits |
| Marca de tiempo | 17 | "timestamp" | Marca de tiempo |
| Entero de 64 bits | 18 | "long" | Entero de 64 bits |
Examples
Considere este documento de ejemplo de la colección de tiendas.
{
"_id": "0fcc0bf0-ed18-4ab8-b558-9848e18058f4",
"name": "First Up Consultants | Beverage Shop - Satterfieldmouth",
"location": {
"lat": -89.2384,
"lon": -46.4012
},
"staff": {
"totalStaff": {
"fullTime": 8,
"partTime": 20
}
},
"sales": {
"totalSales": 75670,
"salesByCategory": [
{
"categoryName": "Wine Accessories",
"totalSales": 34440
},
{
"categoryName": "Bitters",
"totalSales": 39496
},
{
"categoryName": "Rum",
"totalSales": 1734
}
]
},
"promotionEvents": [
{
"eventName": "Unbeatable Bargain Bash",
"promotionalDates": {
"startDate": {
"Year": 2024,
"Month": 6,
"Day": 23
},
"endDate": {
"Year": 2024,
"Month": 7,
"Day": 2
}
},
"discounts": [
{
"categoryName": "Whiskey",
"discountPercentage": 7
},
{
"categoryName": "Bitters",
"discountPercentage": 15
},
{
"categoryName": "Brandy",
"discountPercentage": 8
},
{
"categoryName": "Sports Drinks",
"discountPercentage": 22
},
{
"categoryName": "Vodka",
"discountPercentage": 19
}
]
},
{
"eventName": "Steal of a Deal Days",
"promotionalDates": {
"startDate": {
"Year": 2024,
"Month": 9,
"Day": 21
},
"endDate": {
"Year": 2024,
"Month": 9,
"Day": 29
}
},
"discounts": [
{
"categoryName": "Organic Wine",
"discountPercentage": 19
},
{
"categoryName": "White Wine",
"discountPercentage": 20
},
{
"categoryName": "Sparkling Wine",
"discountPercentage": 19
},
{
"categoryName": "Whiskey",
"discountPercentage": 17
},
{
"categoryName": "Vodka",
"discountPercentage": 23
}
]
}
]
}
Ejemplo 1: Buscar almacenes con nombres de tipo de cadena
Para buscar cualquier almacén cuyo nombre sea de tipo cadena, ejecute una consulta mediante el operador $type en el campo nombre. A continuación, proyecta solo los campos id. y nombre y limita los resultados a un documento del conjunto de resultados.
db.stores.find({
"name": {
$type: "string"
}
}, {
"_id": 1,
"name": 1
}).limit(1)
Esta consulta devuelve el siguiente resultado:
[
{
"_id": "a715ab0f-4c6e-4e9d-a812-f2fab11ce0b6",
"name": "Lakeshore Retail | Holiday Supply Hub - Marvinfort"
}
]
Ejemplo 2: Validación de datos mediante varias comprobaciones de tipos
Esta consulta muestra cómo validar que los campos esenciales de la estructura de documentos de la colección tienen los tipos de datos deseados.
db.stores.find({
"_id": "905d1939-e03a-413e-a9c4-221f74055aac",
"name": {
$type: "string"
},
"location": {
$type: "object"
},
"staff.employeeCount.fullTime": {
$type: ["int", "long"]
},
"promotionEvents": {
$type: "array"
}
}, {
"_id": 1,
"name": 1,
"location": 1,
"staff": 1
}
)
Esta consulta devuelve el resultado siguiente.
[
{
"_id": "905d1939-e03a-413e-a9c4-221f74055aac",
"name": "Trey Research | Home Office Depot - Lake Freeda",
"location": {
"lat": -48.9752,
"lon": -141.6816
},
"staff": {
"employeeCount": {
"fullTime": 12
}
}
}
]