Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Operator $isArray digunakan untuk menentukan apakah nilai yang ditentukan adalah array. Ini mengembalikan true jika nilainya adalah array dan false sebaliknya. Operator ini sering digunakan dalam alur agregasi untuk memfilter atau mengubah dokumen berdasarkan apakah bidang berisi array.
Syntax
{
$isArray: <expression>
}
Parameter-parameternya
| Pengaturan | Description |
|---|---|
<expression> |
Ekspresi valid apa pun yang diselesaikan ke nilai yang ingin Anda periksa. |
Examples
Pertimbangkan dokumen sampel ini dari koleksi toko.
{
"_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"
]
}
Contoh 1: Memeriksa apakah bidang adalah array
Kueri ini memeriksa apakah sales.salesByCategory bidang di setiap dokumen penyimpanan adalah array dan mengembalikan informasi tersebut untuk tiga dokumen pertama.
db.stores.aggregate([
{
$project: {
_id: 1,
isSalesByCategoryArray: { $isArray: "$sales.salesByCategory" }
}
},
// Limit the result to the first 3 documents
{ $limit: 3 }
])
Tiga hasil pertama yang dikembalikan oleh kueri ini adalah:
[
{
"_id": "649626c9-eda1-46c0-a27f-dcee19d97f41",
"isSalesByCategoryArray": true
},
{
"_id": "8345de34-73ec-4a99-9cb6-a81f7b145c34",
"isSalesByCategoryArray": true
},
{
"_id": "57cc4095-77d9-4345-af20-f8ead9ef0197",
"isSalesByCategoryArray": true
}
]
Contoh 2: Memfilter dokumen berdasarkan bidang array
Kueri ini menunjukkan penggunaan $isArray untuk memfilter dokumen di mana promotionEvents bidang adalah array.
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 } }
])
Tiga hasil pertama yang dikembalikan oleh kueri ini adalah:
[
{
"_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"
}
]