Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Der $min
Akkumulatoroperator wird in Aggregationsphasen wie $group
, , $bucket
, $bucketAuto
oder $setWindowFields
. Er berechnet den Minimalwert eines angegebenen Felds in Dokumenten in einer Gruppe oder einem Fenster. Dieser Operator eignet sich besonders zum Zusammenfassen von Daten oder zum Auffinden des kleinsten Werts in einem Dataset.
Syntax
$min: <expression>
Dabei <expression>
kann es sich um einen Feldpfad oder einen Aggregationsausdruck handeln, der die für die Mindestberechnung zu berücksichtigenden Werte angibt.
Die Parameter
Parameter | BESCHREIBUNG |
---|---|
<expression> |
Gibt den Feld- oder berechneten Wert an, um den Minimalwert zu bestimmen. |
Beispiele
Lassen Sie uns die Verwendung mit Dokumenten verstehen, die gemäß diesem Schema strukturiert sind.
{
"_id": "7954bd5c-9ac2-4c10-bb7a-2b79bd0963c5",
"name": "Lakeshore Retail | DJ Equipment Stop - Port Cecile",
"location": {
"lat": 60.1441,
"lon": -141.5012
},
"staff": {
"totalStaff": {
"fullTime": 2,
"partTime": 0
}
},
"sales": {
"salesByCategory": [
{
"categoryName": "DJ Headphones",
"totalSales": 35921
}
],
"fullSales": 3700
},
"promotionEvents": [
{
"eventName": "Bargain Blitz Days",
"promotionalDates": {
"startDate": {
"Year": 2024,
"Month": 3,
"Day": 11
},
"endDate": {
"Year": 2024,
"Month": 2,
"Day": 18
}
},
"discounts": [
{
"categoryName": "DJ Turntables",
"discountPercentage": 18
},
{
"categoryName": "DJ Mixers",
"discountPercentage": 15
}
]
}
],
"tag": [
"#ShopLocal",
"#SeasonalSale",
"#FreeShipping",
"#MembershipDeals"
],
"company": "Lakeshore Retail",
"city": "Port Cecile",
"lastUpdated": {
"$date": "2024-12-11T10:21:58.274Z"
}
}
Beispiel 1: Verwenden $min
in $group
In diesem Beispiel wird der Mindestumsatzwert für jede Kategorie im sales.salesByCategory
Array berechnet.
db.stores.aggregate([
{
$unwind: "$sales.salesByCategory"
},
{
$group: {
_id: "$sales.salesByCategory.categoryName",
minSales: { $min: "$sales.salesByCategory.totalSales" }
}
}
])
Diese Abfrage würde das folgende Dokument zurückgeben.
[
{ _id: 'Christmas Trees', minSales: 391 },
{ _id: 'Nuts', minSales: 257 },
{ _id: 'Camping Tables', minSales: 171 },
{ _id: 'Music Theory Books', minSales: 323 },
{ _id: 'Fortified Wine', minSales: 521 },
{ _id: "Children's Mystery", minSales: 1470 },
{ _id: 'Short Throw Projectors', minSales: 111 },
{ _id: 'Pliers', minSales: 1981 },
{ _id: 'Bluetooth Headphones', minSales: 465 },
{ _id: 'Video Storage', minSales: 1568 },
{ _id: 'Cleansers', minSales: 170 },
{ _id: 'Camera Straps', minSales: 127 },
{ _id: 'Carry-On Bags', minSales: 149 },
{ _id: 'Disinfectant Wipes', minSales: 647 },
{ _id: 'Insignia Smart TVs', minSales: 451 },
{ _id: 'Toner Refill Kits', minSales: 3525 },
{ _id: 'iPads', minSales: 325 },
{ _id: 'Storage Baskets', minSales: 1151 },
{ _id: 'Memory Foam Mattresses', minSales: 422 },
{ _id: 'Body Spray', minSales: 448 }
]
Beispiel 2: Verwenden $min
in $bucket
In diesem Beispiel werden Buckets basierend auf Verkaufswerten erstellt und der Mindestumsatzwert für jeden Bucket berechnet.
db.stores.aggregate([
{
$bucket: {
groupBy: "$sales.totalSales",
boundaries: [0, 1000, 5000, 10000],
default: "Other",
output: {
minSales: { $min: "$sales.totalSales" }
}
}
}
])
Diese Abfrage würde das folgende Dokument zurückgeben.
[
{ _id: 1000, minSales: 1000 },
{ _id: 'Other', minSales: null },
{ _id: 0, minSales: 108 },
{ _id: 5000, minSales: 5001 }
]
Beispiel 3: Verwenden in $min
$setWindowFields
Um den Mindestrabatt für die Kategorie "Laptops" nach Unternehmen zu erhalten, im Jahr 2023:
db.stores.aggregate([
{ $unwind: "$promotionEvents" },
{ $unwind: "$promotionEvents.discounts" },
// Filter only Laptops category and events in 2023
{
$match: {
"promotionEvents.promotionalDates.startDate.Year": 2023,
"promotionEvents.discounts.categoryName": "Laptops"
}
},
// Use $setWindowFields to calculate average discount by city
{
$setWindowFields: {
partitionBy: "$company",
output: {
minDiscount: {
$min: "$promotionEvents.discounts.discountPercentage",
window: { documents: ["unbounded", "unbounded"] }
}
}
}
},
// Group by city to return one result per city
{
$group: {
_id: "$company",
minDiscount: { $first: "$minDiscount" }
}
}
])
Diese Abfrage würde das folgende Dokument zurückgeben.
[
{ _id: 'Boulder Innovations', minDiscount: 6 },
{ _id: 'VanArsdel, Ltd.', minDiscount: 6 },
{ _id: 'Proseware, Inc.', minDiscount: 8 },
{ _id: 'Fabrikam, Inc.', minDiscount: 5 },
{ _id: 'Contoso, Ltd.', minDiscount: 5 },
{ _id: 'Fourth Coffee', minDiscount: 6 },
{ _id: 'Trey Research', minDiscount: 7 },
{ _id: 'Adatum Corporation', minDiscount: 5 },
{ _id: 'Relecloud', minDiscount: 5 },
{ _id: 'Lakeshore Retail', minDiscount: 7 },
{ _id: 'Northwind Traders', minDiscount: 8 },
{ _id: 'First Up Consultants', minDiscount: 9 },
{ _id: 'Wide World Importers', minDiscount: 10 },
{ _id: 'Tailwind Traders', minDiscount: 5 }
]
Verwandte Inhalte
- Prüfen Sie die Optionen für die Migration von MongoDB zu Azure Cosmos DB for MongoDB (virtueller Kern).
- Erfahren Sie mehr über die Featurekompatibilität mit MongoDB