Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Vonatkozik a következőkre:
MongoDB virtuális mag
Az $minN
operátor egy tömb n legkisebb értékét adja vissza. Akkor hasznos, ha numerikus értékek alapján szeretné megtalálni a legalacsonyabb teljesítményt nyújtó elemeket, például a legkisebb értékesítési adatokat vagy a legalacsonyabb kedvezmény százalékos arányát.
Szemantika
Az operátor szintaxisa a $objectToArray
következő:
{
$minN: {
input: <array>,
n: <number>
}
}
Paraméterek
Leírás | |
---|---|
input |
Az a tömb, amelyből az n legkisebb értéket szeretné visszaadni. A tömbnek numerikus értékeket kell tartalmaznia. |
n |
A visszaadandó legkisebb értékek száma. Pozitív egész számnak kell lennie. |
példa
Tekintsük át az adathalmazból származó stores
JSON-minta használatát.
{
"_id": "40d6f4d7-50cd-4929-9a07-0a7a133c2e74",
"name": "Proseware, Inc. | Home Entertainment Hub - East Linwoodbury",
"sales": {
"totalSales": 151864,
"salesByCategory": [
{
"categoryName": "Sound Bars",
"totalSales": 2120
},
{
"categoryName": "Home Theater Projectors",
"totalSales": 45004
},
{
"categoryName": "Game Controllers",
"totalSales": 43522
},
{
"categoryName": "Remote Controls",
"totalSales": 28946
},
{
"categoryName": "VR Games",
"totalSales": 32272
}
]
},
"staff": {
"totalStaff": {
"fullTime": 19,
"partTime": 20
}
}
}
1. példa: Két legalacsonyabb értékesítési érték lekérése
Tegyük fel, hogy az összes értékesítési kategória legalacsonyabb két értékesítési értékét szeretné megtalálni az alulteljesítő termékek azonosításához.
db.stores.aggregate([
{ $match: {"_id": "40d6f4d7-50cd-4929-9a07-0a7a133c2e74"} },
{
$project: {
name: 1,
lowestTwoSales: {
$minN: {
input: "$sales.salesByCategory.totalSales",
n: 2
}
}
}
}
])
Ez a következő kimenetet eredményezi:
[
{
_id: '40d6f4d7-50cd-4929-9a07-0a7a133c2e74',
name: 'Proseware, Inc. | Home Entertainment Hub - East Linwoodbury',
lowestTwoSales: [ 2120, 28946 ]
}
]
2. példa: Legkisebb kedvezmény százalékos értékének megkeresése
A promóciós esemény legkisebb kedvezményének százalékos arányát is $minN
megtalálhatja.
db.stores.aggregate([
{ $match: {"_id": "40d6f4d7-50cd-4929-9a07-0a7a133c2e74"} },
{ $unwind: "$promotionEvents" },
{ $match: {"promotionEvents.eventName": "Major Bargain Bash"} },
{
$project: {
name: 1,
eventName: "$promotionEvents.eventName",
smallestDiscounts: {
$minN: {
input: "$promotionEvents.discounts.discountPercentage",
n: 3
}
}
}
}
])
Ez a "Major Bargain Bash" promóciós esemény három legkisebb kedvezményszázalékát adja vissza.
[
{
_id: '40d6f4d7-50cd-4929-9a07-0a7a133c2e74',
name: 'Proseware, Inc. | Home Entertainment Hub - East Linwoodbury',
eventName: 'Major Bargain Bash',
smallestDiscounts: [ 7, 8, 9 ]
}
]
3. példa: Alkalmazottak számának összehasonlítása áruházakban
A legalacsonyabb létszámmal rendelkező üzletek megkeresésével elemezheti $minN
az oktatói szinteket.
db.stores.aggregate([
{
$project: {
name: 1,
staffNumbers: ["$staff.totalStaff.fullTime", "$staff.totalStaff.partTime"],
lowestStaffCount: {
$minN: {
input: ["$staff.totalStaff.fullTime", "$staff.totalStaff.partTime"],
n: 1
}
}
}
},
{ $limit: 5 }
])
Ez a lekérdezés az egyes áruházak legalacsonyabb (teljes vagy részmunkaidős) alkalmazottak számát jeleníti meg, segítve a minimális személyzettel rendelkező üzletek azonosítását.
[
{
_id: 'af9015d8-3f6b-455f-8967-a83cc22ff018',
name: 'VanArsdel, Ltd. | Party Goods Nook - Kunzeshire',
staffNumbers: [ 15, 1 ],
lowestStaffCount: [ 1 ]
},
{
_id: 'ed319c06-731d-45fc-8a47-b05af8637cdf',
name: 'Relecloud | Computer Outlet - Langoshfort',
staffNumbers: [ 10, 3 ],
lowestStaffCount: [ 3 ]
},
{
_id: '62438f5f-0c56-4a21-8c6c-6bfa479494ad',
name: 'First Up Consultants | Plumbing Supply Shoppe - New Ubaldofort',
staffNumbers: [ 20, 18 ],
lowestStaffCount: [ 18 ]
},
{
_id: '71c50be7-5c69-4a01-9218-e479fdeb6cee',
name: 'Wide World Importers | Carpets Market - Port Newtonburgh',
staffNumbers: [ 1, 14 ],
lowestStaffCount: [ 1 ]
},
{
_id: '4dc0275d-b554-4b0a-a1b2-0f14154be71d',
name: 'VanArsdel, Ltd. | DJ Equipment Outlet - Lake Edmond',
staffNumbers: [ 2, 13 ],
lowestStaffCount: [ 2 ]
}
]
4. példa: Az alulteljesítő kategóriák azonosítása az összes üzletben
Keresse meg az összes üzletben az alsó két értékesítési értéket a folyamatosan alulteljesítő termékkategóriák azonosításához.
db.stores.aggregate([
{ $match: { "sales.salesByCategory": { $exists: true, $ne: [] } } },
{
$project: {
name: 1,
location: 1,
bottomTwoSales: {
$minN: {
input: "$sales.salesByCategory.totalSales",
n: 2
}
}
}
},
{ $sort: { "bottomTwoSales.0": 1 } },
{ $limit: 3 }
])
Ez a lekérdezés a legalacsonyabb minimális értékesítési értékekkel rendelkező három áruházat adja vissza, segít azonosítani azokat a helyeket, amelyek több támogatást vagy különböző termékstratégiát igényelhetnek.
[
{
_id: 'c601ced7-d472-47e8-91c1-f213e3f60250',
name: 'Tailwind Traders | Bed and Bath Bazaar - West Imaniside',
location: { lat: -41.113, lon: -108.3752 },
bottomTwoSales: [ 101, 12774 ]
},
{
_id: '09782c05-a134-43a1-a65b-6a332bc89d7c',
name: 'Tailwind Traders | Microphone Deals - Sonnytown',
location: { lat: -61.9575, lon: 55.2523 },
bottomTwoSales: [ 102, 18531 ]
},
{
_id: '57303916-24f1-43a9-a50c-b96fb76ae40c',
name: 'Fabrikam, Inc. | Art Supply Boutique - Port Geovanni',
location: { lat: 63.9018, lon: -125.7517 },
bottomTwoSales: [ 102, 6352 ]
}
]
Kapcsolódó tartalom
- A MongoDB-ről az Azure Cosmos DB for MongoDB-re (vCore) való migrálás lehetőségeinek áttekintése
- További információ a MongoDB-vel való funkciókompatibilitásról