Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
L’opérateur $documentNumber trie les documents sur un ou plusieurs champs d’une partition et affecte un numéro de document pour chaque document du jeu de résultats.
Syntaxe
{
$documentNumber: {}
}
Examples
Considérez cet exemple de document de la collection des magasins.
{
"_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
}
]
}
]
}
Exemple 1 : Récupérer un numéro de document par ventes totales
Pour récupérer un numéro de document (classement positionnel) pour chaque magasin sous la société First Up Consultants, exécutez d’abord une requête pour filtrer le nom de la société, puis triez les résultats dans l’ordre croissant des ventes totales et attribuez un numéro de document à chacun des documents du jeu de résultats trié.
db.stores.aggregate([{
"$match": {
"company": {
"$in": ["First Up Consultants"]
}
}
}, {
"$setWindowFields": {
"partitionBy": "$company",
"sortBy": {
"sales.totalSales": -1
},
"output": {
"documentNumber": {
"$documentNumber": {}
}
}
}
}, {
"$project": {
"company": 1,
"documentNumber": 1
}
}])
Les 5 premiers résultats retournés par cette requête sont les suivants :
[
{
"_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
}
]