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 $nor Operator führt eine logische NOR-Operation an einer Menge von Ausdrücken aus und wählt Dokumente aus, die alle angegebenen Ausdrücke nicht erfüllen.
Syntax
{
$nor: [{
< expression1 >
}, {
< expression2 >
}, ..., {
< expressionN >
}]
}
Die Parameter
| Parameter | BESCHREIBUNG |
|---|---|
expression |
Ein Array von Ausdrücken, von denen alle falsch sein müssen, damit ein Dokument einbezogen werden kann |
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: Einfacher NOR-Vorgang
Um Filialen zu finden, die weder über 15 Vollzeitmitarbeiter noch mehr als 20 Teilzeitmitarbeiter verfügen, führen Sie eine Abfrage mit dem $nor-Operator unter beiden Bedingungen aus. Projizieren Sie dann nur die Namen- und Mitarbeiterfelder aus den Stores im Resultset.
db.stores.find({
$nor: [{
"staff.totalStaff.fullTime": {
$gt: 15
}
}, {
"staff.totalStaff.partTime": {
$gt: 20
}
}]
}, {
"name": 1,
"staff": 1
})
Die ersten beiden Ergebnisse, die von dieser Abfrage zurückgegeben werden, sind:
[
{
"_id": "a715ab0f-4c6e-4e9d-a812-f2fab11ce0b6",
"name": "Lakeshore Retail | Holiday Supply Hub - Marvinfort",
"staff": {
"totalStaff": {
"fullTime": 9,
"partTime": 18
}
}
},
{
"_id": "923d2228-6a28-4856-ac9d-77c39eaf1800",
"name": "Lakeshore Retail | Home Decor Hub - Franciscoton",
"staff": {
"totalStaff": {
"fullTime": 7,
"partTime": 6
}
}
}
]
Beispiel 2: Komplexer NOR-Vorgang
Um Geschäfte ohne Verkäufe über 100.000 $ zu finden, ohne "Digital Watches" zu verkaufen, oder ohne Werbeaktionen im September 2024, führen Sie eine Abfrage mit dem $nor-Betreiber unter allen drei Bedingungen aus. Schließlich projizieren Sie nur den Namen, die Verkaufs- und Werbeereignisse aus den Stores im Resultset.
db.stores.find({
$nor: [{
"sales.totalSales": {
$gt: 100000
}
}, {
"sales.salesByCategory.categoryName": "Digital Watches"
}, {
"promotionEvents": {
$elemMatch: {
"promotionalDates.startDate.Month": 9,
"promotionalDates.startDate.Year": 2024
}
}
}]
}, {
"name": 1,
"sales": 1,
"promotionEvents": 1
})
Eines der Ergebnisse, die von dieser Abfrage zurückgegeben werden, ist:
[
{
"_id": "7954bd5c-9ac2-4c10-bb7a-2b79bd0963c5",
"name": "Lakeshore Retail | DJ Equipment Stop - Port Cecile",
"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
}
]
}
]
}
]
Verwandte Inhalte
- Ü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.