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 $denseRank operador ordena documentos en uno o varios campos dentro de una partición y asigna una clasificación para cada documento en relación con otros documentos del conjunto de resultados.
Syntax
{
$denseRank: {}
}
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: Recuperación de un rango de documento para cada almacén
Para calcular un rango de documento para cada tienda de la empresa First Up Consultants, ejecute primero una consulta para filtrar por la empresa y, a continuación, ordene los documentos resultantes en orden descendente de ventas y asigne una clasificación de documento a cada documento del conjunto de resultados ordenados.
db.stores.aggregate([{
"$match": {
"company": {
"$in": ["First Up Consultants"]
}
}
}, {
"$setWindowFields": {
"partitionBy": "$company",
"sortBy": {
"sales.totalSales": -1
},
"output": {
"denseRank": {
"$denseRank": {}
}
}
}
}, {
"$project": {
"company": 1,
"sales.totalSales": 1,
"denseRank": 1
}
}])
Los cinco primeros resultados devueltos por esta consulta son:
[
{
"_id": "a0386810-b6f8-4b05-9d60-e536fb2b0026",
"sales": {
"revenue": 327583
},
"company": "First Up Consultants",
"denseRank": 1
},
{
"_id": "ad8af64a-d5bb-4162-9bb6-e5104126566d",
"sales": {
"revenue": 288582
},
"company": "First Up Consultants",
"denseRank": 2
},
{
"_id": "39acb3aa-f350-41cb-9279-9e34c004415a",
"sales": {
"revenue": 279183
},
"company": "First Up Consultants",
"denseRank": 3
},
{
"_id": "cd3d3782-17d1-451e-8b0f-4f10a68a8db7",
"sales": {
"revenue": 271604
},
"company": "First Up Consultants",
"denseRank": 4
},
{
"_id": "63ac4722-fc87-4526-a5e0-b5767d2807f7",
"sales": {
"revenue": 260409
},
"company": "First Up Consultants",
"denseRank": 5
}
]