Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
GÄLLER FÖR:
MongoDB vCore
Operatorn $elemMatch
används för att matcha dokument som innehåller ett matrisfält med minst ett element som matchar alla angivna frågevillkor. Den här operatorn är särskilt användbar när du behöver hitta matrisdokument med angivet element.
Syntax
Den grundläggande syntaxen för operatorn $elemMatch
är följande:
db.collection.find({ <field>: { $elemMatch: { <query1>, <query2>, ... } } })
Parametrar
beskrivning | |
---|---|
field |
Fältet i dokumentet som innehåller matrisen som ska frågas. |
query |
De villkor som minst ett element i matrisen måste uppfylla. |
Exempel
Nu ska vi förstå användningen med exempel-json från stores
datauppsättningen.
[
{
"_id": "91de5201-8194-44bf-848f-674e8df8bf5e",
"name": "Adatum Corporation",
"promotionEvents": [
{
"discounts": [
{ "categoryName": "DJ Cases", "discountPercentage": 6 },
{ "categoryName": "DJ Mixers", "discountPercentage": 14 }
]
},
{
"discounts": [
{ "categoryName": "DJ Headphones", "discountPercentage": 19 },
{ "categoryName": "DJ Speakers", "discountPercentage": 13 }
]
},
{
"discounts": [
{ "categoryName": "DJ Lighting", "discountPercentage": 12 },
{ "categoryName": "DJ Accessories", "discountPercentage": 6 }
]
}
]
}
]
Exempel 1: Sök i en matris för specifika element i listan över element
Det här exemplet hittar de två första dokumenten i samlingen som har minst en rabatt med kategorinamnet "DJ Lighting" i matrisen stores
promotionEvents
. Frågan returnerar endast fälten _id
och promotionEvents.discounts
för dessa dokument.
db.stores.find( {"promotionEvents.discounts":{$elemMatch:{"categoryName":"DJ Lighting"}}}
,{ _id: 1, "promotionEvents.discounts": 1 }).limit(2)
Följande dokument returneras.
{
"_id": "7954bd5c-9ac2-4c10-bb7a-2b79bd0963c5",
"promotionEvents": [
{
"discounts": [
{
"categoryName": "DJ Turntables",
"discountPercentage": 18
},
{
"categoryName": "DJ Mixers",
"discountPercentage": 15
}
]
},
{
"discounts": [
{
"categoryName": "DJ Lighting",
"discountPercentage": 14
},
{
"categoryName": "DJ Cases",
"discountPercentage": 20
}
]
}
]
},
{
"_id": "91de5201-8194-44bf-848f-674e8df8bf5e",
"promotionEvents": [
{
"discounts": [
{
"categoryName": "DJ Cases",
"discountPercentage": 6
},
{
"categoryName": "DJ Mixers",
"discountPercentage": 14
}
]
},
{
"discounts": [
{
"categoryName": "DJ Headphones",
"discountPercentage": 19
},
{
"categoryName": "DJ Speakers",
"discountPercentage": 13
}
]
},
{
"discounts": [
{
"categoryName": "DJ Lighting",
"discountPercentage": 12
},
{
"categoryName": "DJ Accessories",
"discountPercentage": 6
}
]
}
]
}
Relaterat innehåll
- Granska alternativ för migrering från MongoDB till Azure Cosmos DB för MongoDB (virtuell kärna)
- Läs mer om funktionskompatibilitet med MongoDB