Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
$indexOfArray işleci, bir dizideki bir öğeyi aramak ve öğenin ilk oluşumunun dizinini döndürmek için kullanılır. öğesi bulunamazsa döndürür -1. Bu işleç, bir öğenin dizi içindeki konumunu belirlemeniz gereken sorgular için kullanışlıdır. Örneğin, listedeki belirli bir değerin veya nesnenin dizinini bulma.
Sözdizimi
{
$indexOfArray: [ < array > , < searchElement > , < start > , < end > ]
}
Parametreler
| Parametre | Description |
|---|---|
<array> |
öğesini aramak istediğiniz dizi. |
<searchElement> |
Dizide aradığınız öğe. |
<start> |
(İsteğe bağlı) Aramanın başlatıldığı dizin. Atlanırsa, arama dizinin başından başlar. |
<end> |
(İsteğe bağlı) Aramanın sonlandırıldığı dizin. Atlanırsa, arama dizinin sonuna kadar gider. |
Örnekler
Stores koleksiyonundaki bu örnek belgeyi göz önünde bulundurun.
{
"_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"
]
}
Örnek 1: İlk oluşumun dizinini bulma
Bu sorgu, koleksiyon genelinde dizi içinde salesByCategory belirli bir kategori adının ("DJ Headphones") konumunu (dizinini) bulur.
db.stores.aggregate([
{
$project: {
index: {
$indexOfArray: [
"$sales.salesByCategory.categoryName",
"DJ Headphones"
]
}
}
},
// Limit the result to the first 3 documents
{ $limit: 3 }
])
Bu sorgu aşağıdaki sonuçları döndürür:
[
{
"_id": "649626c9-eda1-46c0-a27f-dcee19d97f41",
"index": -1
},
{
"_id": "8345de34-73ec-4a99-9cb6-a81f7b145c34",
"index": -1
},
{
"_id": "57cc4095-77d9-4345-af20-f8ead9ef0197",
"index": -1
}
]
Örnek 2: Aralıktaki dizini bulma
Bu sorgu, dizinin içindeki "Bargain Blitz Days" yükseltme olayının konumunu belirli bir dizin aralığı içinde promotionEvents (3 ila 5) bulur ve sonuçları filtreler ve eşleşen ilk üç belgeyi döndürür
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 }
])
Bu sorgu aşağıdaki sonuçları döndürür:
[
{
"_id": "ced8caf0-051a-48ce-88d3-2935815261c3",
"index": 3
},
{
"_id": "509be7ce-539a-41b5-8fde-b85fb3ef3faa",
"index": 3
},
{
"_id": "d06e8136-9a7f-4b08-92c8-dc8eac73bad3",
"index": 3
}
]
İlgili içerik
- MongoDB'den Azure DocumentDB'ye geçiş seçeneklerini gözden geçirin.
- MongoDB ile özellik uyumluluğu hakkında daha fazla bilgi edinin.