$documentNumber

El $documentNumber operador ordena documentos en uno o varios campos dentro de una partición y asigna un número de documento para cada documento del conjunto de resultados.

Syntax

{
    $documentNumber: {}
}

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 número de documento por ventas totales

Para recuperar un número de documento (clasificación posicional) para cada tienda de la empresa First Up Consultants, ejecute primero una consulta para filtrar por el nombre de la compañía y, a continuación, ordene los resultados en orden ascendente de ventas totales y asigne un número de documento a cada uno de los documentos del conjunto de resultados ordenados.

db.stores.aggregate([{
    "$match": {
        "company": {
            "$in": ["First Up Consultants"]
        }
    }
}, {
    "$setWindowFields": {
        "partitionBy": "$company",
        "sortBy": {
            "sales.totalSales": -1
        },
        "output": {
            "documentNumber": {
                "$documentNumber": {}
            }
        }
    }
}, {
    "$project": {
        "company": 1,
        "documentNumber": 1
    }
}])

Los primeros 5 resultados devueltos por esta consulta son:

[
    {
        "_id": "39acb3aa-f350-41cb-9279-9e34c004415a",
        "company": "First Up Consultants",
        "documentNumber": 1
    },
    {
        "_id": "26afb024-53c7-4e94-988c-5eede72277d5",
        "company": "First Up Consultants",
        "documentNumber": 2
    },
    {
        "_id": "62438f5f-0c56-4a21-8c6c-6bfa479494ad",
        "company": "First Up Consultants",
        "documentNumber": 3
    },
    {
        "_id": "bfb213fa-8db8-419f-8e5b-e7096120bad2",
        "company": "First Up Consultants",
        "documentNumber": 4
    },
    {
        "_id": "14ab145b-0819-4d22-9e02-9ae0725fcda9",
        "company": "First Up Consultants",
        "documentNumber": 5
    }
]