Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
De $or operator voert een logische OR-bewerking uit op een matrix met expressies en haalt documenten op die voldoen aan ten minste één van de opgegeven voorwaarden.
Syntaxis
{
$or: [{
< expression1 >
}, {
< expression2 >
}, ..., {
< expressionN >
}]
}
Parameterwaarden
| Kenmerk | Description |
|---|---|
expression |
Een matrix met expressies, waarbij ten minste één waar moet zijn om een document te kunnen opnemen |
Voorbeelden
Bekijk dit voorbeelddocument uit de winkelverzameling.
{
"_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
}
]
}
]
}
Voorbeeld 1: OR-bewerking gebruiken als logische query
Met deze query worden winkels opgehaald met meer dan 15 fulltime personeel of meer dan 20 parttime personeel, voert u een query uit met behulp van de operator $or op beide voorwaarden. Projecter vervolgens alleen de naam en de personeelsvelden uit de winkels in de resultatenset.
db.stores.find(
{
$or: [
{ "staff.employeeCount.fullTime": { $gt: 15 } },
{ "staff.employeeCount.partTime": { $gt: 20 } }
]
},
{
"name": 1,
"staff": 1
}
).limit(2)
De eerste twee resultaten die door deze query worden geretourneerd, zijn:
[
{
"_id": "dda2a7d2-6984-40cc-bbea-4cbfbc06d8a3",
"name": "Contoso, Ltd. | Home Improvement Closet - Jaskolskiview",
"staff": {
"employeeCount": {
"fullTime": 16,
"partTime": 8
}
}
},
{
"_id": "44fdb9b9-df83-4492-8f71-b6ef648aa312",
"name": "Fourth Coffee | Storage Solution Gallery - Port Camilla",
"staff": {
"employeeCount": {
"fullTime": 17,
"partTime": 15
}
}
}
]
Voorbeeld 2: OR-operator gebruiken als booleaanse expressie om winkels te identificeren met een hoge verkoop of een groot personeel
Met deze query worden winkels opgehaald met een totale verkoop van meer dan 50.000 of meer dan 25 personeelsleden.
db.stores.aggregate([
{
$project: {
name: 1,
totalSales: "$sales.totalSales",
totalStaff: {
$add: ["$staff.employeeCount.fullTime", "$staff.employeeCount.partTime"]
},
qualifiesForProgram: {
$or: [
{ $gt: ["$sales.totalSales", 50000] },
{ $gt: [{ $add: ["$staff.employeeCount.fullTime", "$staff.employeeCount.partTime"] }, 25] }
]
}
}
},
{ $limit: 4 }
])
De eerste vier resultaten die door deze query worden geretourneerd, zijn:
[
{
"_id": "905d1939-e03a-413e-a9c4-221f74055aac",
"name": "Trey Research | Home Office Depot - Lake Freeda",
"totalStaff": 31,
"qualifiesForProgram": true
},
{
"_id": "a715ab0f-4c6e-4e9d-a812-f2fab11ce0b6",
"name": "Lakeshore Retail | Holiday Supply Hub - Marvinfort",
"totalStaff": 27,
"qualifiesForProgram": true
},
{
"_id": "923d2228-6a28-4856-ac9d-77c39eaf1800",
"name": "Lakeshore Retail | Home Decor Hub - Franciscoton",
"totalStaff": 13,
"qualifiesForProgram": false
},
{
"_id": "7e53ca0f-6e24-4177-966c-fe62a11e9af5",
"name": "Contoso, Ltd. | Office Supply Deals - South Shana",
"totalStaff": 2,
"qualifiesForProgram": false
}
]
Prestatieoverwegingen
- Bekijk de suggesties voor het vinden van betere prestaties.
- Elke voorwaarde in de
$ormatrix wordt onafhankelijk geëvalueerd - Indexen gebruiken indien mogelijk voor betere prestaties
- Houd rekening met de volgorde van voorwaarden voor optimale uitvoering
- Gebruiken
$inin plaats van$orvoor meervoudige gelijkheidscontroles in hetzelfde veld - Houd het aantal
$orvoorwaarden redelijk
- Elke voorwaarde in de
Verwante inhoud
- Bekijk de opties voor het migreren van MongoDB naar Azure DocumentDB.
- Lees meer over functiecompatibiliteit met MongoDB.