Kommentar
Å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.
Operatorn $isArray används för att avgöra om ett angivet värde är en matris. Den returnerar true om värdet är en matris och false annars. Den här operatorn används ofta i aggregeringspipelines för att filtrera eller transformera dokument baserat på om ett fält innehåller en matris.
Syntax
{
$isArray: <expression>
}
Parameterar
| Parameter | Description |
|---|---|
<expression> |
Alla giltiga uttryck som matchar ett värde som du vill kontrollera. |
Examples
Överväg det här exempeldokumentet från butiksamlingen.
{
"_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"
]
}
Exempel 1: Kontrollera om ett fält är en matris
Den här frågan kontrollerar om fältet sales.salesByCategory i varje arkivdokument är en matris och returnerar den informationen för de tre första dokumenten.
db.stores.aggregate([
{
$project: {
_id: 1,
isSalesByCategoryArray: { $isArray: "$sales.salesByCategory" }
}
},
// Limit the result to the first 3 documents
{ $limit: 3 }
])
De första tre resultaten som returneras av den här frågan är:
[
{
"_id": "649626c9-eda1-46c0-a27f-dcee19d97f41",
"isSalesByCategoryArray": true
},
{
"_id": "8345de34-73ec-4a99-9cb6-a81f7b145c34",
"isSalesByCategoryArray": true
},
{
"_id": "57cc4095-77d9-4345-af20-f8ead9ef0197",
"isSalesByCategoryArray": true
}
]
Exempel 2: Filtrera dokument baserat på matrisfält
Den här frågan visar hur du använder $isArray för att filtrera dokument där fältet promotionEvents är en matris.
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 första tre resultaten som returneras av den här frågan är:
[
{
"_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"
}
]