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 $isArray operator wordt gebruikt om te bepalen of een opgegeven waarde een matrix is. Deze retourneert true als de waarde een matrix is en false anders. Deze operator wordt vaak gebruikt in aggregatiepijplijnen om documenten te filteren of te transformeren op basis van het feit of een veld een matrix bevat.
Syntaxis
{
$isArray: <expression>
}
Parameterwaarden
| Kenmerk | Description |
|---|---|
<expression> |
Elke geldige expressie die wordt omgezet in een waarde die u wilt controleren. |
Voorbeelden
Bekijk dit voorbeelddocument uit de winkelverzameling.
{
"_id": "7954bd5c-9ac2-4c10-bb7a-2b79bd0963c5",
"name": "Lakeshore Retail | DJ Equipment Stop - Port Cecile",
"location": {
"lat": 60.1441,
"lon": -141.5012
},
"staff": {
"totalStaff": {
"fullTime": 2,
"partTime": 0
}
},
"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
}
]
}
],
"tag": [
"#ShopLocal",
"#SeasonalSale",
"#FreeShipping",
"#MembershipDeals"
]
}
Voorbeeld 1: Controleren of een veld een matrix is
Deze query controleert of het sales.salesByCategory veld in elk archiefdocument een matrix is en retourneert die informatie voor de eerste drie documenten.
db.stores.aggregate([
{
$project: {
_id: 1,
isSalesByCategoryArray: { $isArray: "$sales.salesByCategory" }
}
},
// Limit the result to the first 3 documents
{ $limit: 3 }
])
De eerste drie resultaten die door deze query worden geretourneerd, zijn:
[
{
"_id": "649626c9-eda1-46c0-a27f-dcee19d97f41",
"isSalesByCategoryArray": true
},
{
"_id": "8345de34-73ec-4a99-9cb6-a81f7b145c34",
"isSalesByCategoryArray": true
},
{
"_id": "57cc4095-77d9-4345-af20-f8ead9ef0197",
"isSalesByCategoryArray": true
}
]
Voorbeeld 2: Documenten filteren op basis van matrixvelden
Deze query laat zien hoe $isArray u documenten filtert waarbij het promotionEvents veld een matrix is.
db.stores.aggregate([
{
$match: {
$expr: { $isArray: "$promotionEvents" }
}
},
// Limit the result to the first 3 documents
{ $limit: 3 },
// Include only _id and name fields in the output
{ $project: { _id: 1, name: 1 } }
])
De eerste drie resultaten die door deze query worden geretourneerd, zijn:
[
{
"_id": "649626c9-eda1-46c0-a27f-dcee19d97f41",
"name": "VanArsdel, Ltd. | Musical Instrument Outlet - East Cassie"
},
{
"_id": "8345de34-73ec-4a99-9cb6-a81f7b145c34",
"name": "Northwind Traders | Bed and Bath Place - West Oraland"
},
{
"_id": "57cc4095-77d9-4345-af20-f8ead9ef0197",
"name": "Wide World Importers | Bed and Bath Store - West Vitafort"
}
]