Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Operatorn $bottom sorterar dokument på ett eller flera fält som anges av frågan och returnerar det sista dokumentet som matchar filtreringsvillkoren.
Syntax
{
$bottom: {
output: [listOfFields],
sortBy: {
<fieldName>: < sortOrder >
}
}
}
Parameterar
| Parameter | Description |
|---|---|
listOfFields |
Listan över fält som ska returneras från det sista dokumentet i resultatuppsättningen |
fieldName |
Fältet som ska användas för att sortera resultatuppsättningen |
sortOrder |
1 eller -1. 1 innebär sortering i stigande ordning på värdet för fältet medan -1 innebär sortering i fallande ordning efter värdena i fältet |
Examples
Överväg det här exempeldokumentet från butiksamlingen.
{
"_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
}
]
}
]
}
Exempel 1: Hitta butiken med lägst total försäljning
Anta att vi vill fastställa butiken i företaget First Up Consultants med den lägsta totala försäljningen, köra en fråga för att hämta dokument i first up consultants-företaget, sortera dokumenten i fallande ordning efter total försäljning och returnera det sista dokumentet i den sorterade resultatuppsättningen.
db.stores.aggregate([{
$match: {
company: {
$in: ["First Up Consultants"]
}
}
}, {
$group: {
_id: "$company",
bottomSales: {
$bottom: {
output: ["$company", "$sales"],
sortBy: {
"sales.revenue": -1
}
}
}
}
}])
Den här frågan returnerar följande resultat:
[
{
"_id": "First Up Consultants",
"bottomSales": [
"First Up Consultants",
{
"totalSales": 119,
"salesByCategory": [
{
"categoryName": "Skirts",
"totalSales": 109
}
]
}
]
}]
Exempel 2: Hitta kategorin per butik med lägst försäljning
Om du vill hitta kategorin med den lägsta försäljningen per butik kör du en fråga för att hämta butiker med flera försäljningskategorier, sortera kategorierna i fallande ordning efter total försäljning i varje butik och returnera det sista dokumentet i den sorterade resultatuppsättningen.
db.stores.aggregate([{
$unwind: "$sales.salesByCategory"
},
{
$match: {
"sales.salesByCategory.totalSales": {
$exists: true
}
}
},
{
$group: {
_id: "$_id",
storeName: {
$first: "$name"
},
lowestCategory: {
$bottom: {
sortBy: {
"sales.salesByCategory.totalSales": 1
},
output: {
categoryName: "$sales.salesByCategory.categoryName",
totalSales: "$sales.salesByCategory.totalSales"
}
}
}
}
}
])
De första två resultaten som returneras av den här frågan är:
[
{
"_id": "b1d86d1f-8705-4157-b64c-a9eda0df4921",
"storeName": "VanArsdel, Ltd. | Baby Products Haven - West Kingfort",
"lowestCategory": { "categoryName": "Baby Monitors", "totalSales": 49585 }
},
{
"_id": "22e6367e-8341-415f-9795-118d2b522abf",
"storeName": "Adatum Corporation | Outdoor Furniture Mart - Port Simone",
"lowestCategory": { "categoryName": "Outdoor Benches", "totalSales": 4976 }
}
]
Relaterat innehåll
- Granska alternativen för att migrera från MongoDB till Azure DocumentDB.
- Läs mer om funktionskompatibilitet med MongoDB.