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 $cond Operator wird verwendet, um eine Bedingung auszuwerten und einen von zwei Ausdrücken basierend auf dem Ergebnis zurückzugeben. Es ähnelt dem ternären Operator in vielen Programmiersprachen. Der $cond Operator kann in Aggregationspipelines verwendet werden, um Ihren Abfragen bedingte Logik hinzuzufügen.
Syntax
{
$cond: {
if: <boolean-expression>,
then: <true-case>,
else: <false-case>
}
}
Parameter
| Parameter | Beschreibung |
|---|---|
| if | Ein boolescher Ausdruck, der ausgewertet wird. |
| then | Der Ausdruck, der zurückgegeben werden soll, wenn die if Bedingung als wahr ausgewertet wird. |
| else (andernfalls) | Der Ausdruck, der zurückgegeben werden soll, wenn die if Bedingung als falsch ausgewertet wird. |
Beispiele
Betrachten Sie dieses Beispieldokument aus der Speichersammlung.
{
"_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
}
]
}
]
}
Beispiel 1: Ermitteln hoher Verkaufskategorien
Diese Abfrage bestimmt, ob der Umsatz für jede Kategorie basierend auf einem Schwellenwert von 250.000 $ als "hoch" oder "niedrig" betrachtet wird.
db.stores.aggregate([{
$project: {
_id: 0,
storeId: "$storeId",
category: "$sales.salesByCategory.categoryName",
sales: "$sales.salesByCategory.totalSales",
salesCategory: {
$cond: {
if: {
$gte: ["$sales.salesByCategory.totalSales", 250000]
},
then: "High",
else: "Low"
}
}
}
},
// Limit the result to the first 3 documents
{
$limit: 3
}
])
Die ersten drei Ergebnisse, die von dieser Abfrage zurückgegeben werden, sind:
[
{
"sales": [
35921,
1000
],
"category": [
"DJ Headphones",
"DJ Cables"
],
"salesCategory": "High"
},
{
"sales": [
4760
],
"category": [
"Guitars"
],
"salesCategory": "High"
},
{
"sales": [
14697,
44111,
37854,
46211,
7269,
25451,
21083
],
"category": [
"Washcloths",
"Innerspring Mattresses",
"Microfiber Towels",
"Shower Curtains",
"Bathrobes",
"Tablecloths",
"Bath Accessories"
],
"salesCategory": "High"
}
]
Beispiel 2: Ermitteln der Vollzeit- oder Teilzeitdominanz
Diese Abfrage bestimmt, ob ein Speicher vollzeit- oder Teilzeitmitarbeiter beschäftigt.
db.stores.aggregate([{
$project: {
name: 1,
staffType: {
$cond: {
if: {
$gte: ["$staff.totalStaff.fullTime", "$staff.totalStaff.partTime"]
},
then: "More Full-Time",
else: "More Part-Time"
}
}
}
},
// Limit the result to the first 3 documents
{
$limit: 3
}
])
Die ersten drei Ergebnisse, die von dieser Abfrage zurückgegeben werden, sind:
[
{
"_id": "7954bd5c-9ac2-4c10-bb7a-2b79bd0963c5",
"name": "Lakeshore Retail | DJ Equipment Stop - Port Cecile",
"staffType": "More Full-Time"
},
{
"_id": "649626c9-eda1-46c0-a27f-dcee19d97f41",
"name": "VanArsdel, Ltd. | Musical Instrument Outlet - East Cassie",
"staffType": "More Full-Time"
},
{
"_id": "8345de34-73ec-4a99-9cb6-a81f7b145c34",
"name": "Northwind Traders | Bed and Bath Place - West Oraland",
"staffType": "More Part-Time"
}
]
Zugehöriger Inhalt
- Überprüfen Sie die Optionen für die Migration von MongoDB zu Azure Cosmos DB für MongoDB (vCore).
- Weitere Informationen zur Featurekompatibilität mit MongoDB.