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 $indexOfArray digunakan untuk mencari elemen dalam array dan mengembalikan indeks kemunculan pertama elemen. Jika elemen tidak ditemukan, elemen akan mengembalikan -1. Operator ini berguna untuk kueri di mana Anda perlu menentukan posisi elemen dalam array. Misalnya, menemukan indeks nilai atau objek tertentu dalam daftar.
Syntax
{
$indexOfArray: [ < array > , < searchElement > , < start > , < end > ]
}
Parameter-parameternya
| Pengaturan | Description |
|---|---|
<array> |
Array tempat Anda ingin mencari elemen . |
<searchElement> |
Elemen yang Anda cari dalam array. |
<start> |
(Opsional) Indeks tempat memulai pencarian. Jika dihilangkan, pencarian dimulai dari awal array. |
<end> |
(Opsional) Indeks untuk mengakhiri pencarian. Jika dihilangkan, pencarian akan berlangsung hingga akhir array. |
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: Menemukan indeks kemunculan pertama
Kueri ini menemukan posisi (indeks) dari nama kategori tertentu ("Headphone DJ") di dalam salesByCategory array di seluruh koleksi.
db.stores.aggregate([
{
$project: {
index: {
$indexOfArray: [
"$sales.salesByCategory.categoryName",
"DJ Headphones"
]
}
}
},
// Limit the result to the first 3 documents
{ $limit: 3 }
])
Kueri ini mengembalikan hasil berikut:
[
{
"_id": "649626c9-eda1-46c0-a27f-dcee19d97f41",
"index": -1
},
{
"_id": "8345de34-73ec-4a99-9cb6-a81f7b145c34",
"index": -1
},
{
"_id": "57cc4095-77d9-4345-af20-f8ead9ef0197",
"index": -1
}
]
Contoh 2: Menemukan indeks dalam rentang
Kueri ini menemukan posisi peristiwa promosi "Bargain Blitz Days" di dalam promotionEvents array dalam rentang indeks tertentu (3 hingga 5) dan memfilter hasil bersama dengan mengembalikan tiga dokumen pertama yang cocok
db.stores.aggregate([
// Step 1: Project the index of the "Bargain Blitz Days" event name within the specified range
{
$project: {
index: {
$indexOfArray: [
"$promotionEvents.eventName",
"Bargain Blitz Days",
3,
5
]
}
}
},
// Step 2: Match documents where index > 0
{
$match: {
index: { $gt: 0 }
}
},
// Limit the result to the first 3 documents
{ $limit: 3 }
])
Kueri ini mengembalikan hasil berikut:
[
{
"_id": "ced8caf0-051a-48ce-88d3-2935815261c3",
"index": 3
},
{
"_id": "509be7ce-539a-41b5-8fde-b85fb3ef3faa",
"index": 3
},
{
"_id": "d06e8136-9a7f-4b08-92c8-dc8eac73bad3",
"index": 3
}
]
Konten terkait
- Tinjau opsi untuk bermigrasi dari MongoDB ke Azure DocumentDB.
- Baca selengkapnya tentang kompatibilitas fitur dengan MongoDB.