Cloud Firestore Dizin Tanımı Referansı

Cloud Firestore, en yaygın sorgu türlerini desteklemek için otomatik olarak dizinler oluşturur ancak Cloud Firestore kılavuzlarında açıklandığı gibi özel dizinler ve dizin geçersiz kılmaları tanımlamanıza olanak tanır.

Özel dizinleri Firebase konsolunda veya CLI'yi kullanarak oluşturabilir, değiştirebilir ve dağıtabilirsiniz. CLI'den, varsayılan dosya adı firestore.indexes.json olan dizin yapılandırma dosyanızı düzenleyin ve firebase deploy komutunu kullanarak dağıtın.

firebase firestore:indexes kullanarak dizinleri CLI ile dışa aktarabilirsiniz.

Bir dizin yapılandırma dosyası, bir indexes dizisini ve isteğe bağlı bir fieldOverrides dizisini içeren bir nesneyi tanımlar. İşte bir örnek:

{
  // Required, specify compound indexes
  indexes: [
    {
      collectionGroup: "posts",
      queryScope: "COLLECTION",
      fields: [
        { fieldPath: "author", arrayConfig: "CONTAINS" },
        { fieldPath: "timestamp", order: "DESCENDING" }
      ]
    }
  ],

  // Optional, disable indexes or enable single-field collection group indexes
  fieldOverrides: [
    {
      collectionGroup: "posts",
      fieldPath: "myBigMapField",
      // We want to disable indexing on our big map field, and so empty the indexes array
      indexes: []
    }
  ]
}

Dizin yapılandırması dağıtma

Dizin yapılandırmanızı firebase deploy komutuyla dağıtın. Yalnızca projenizde yapılandırılmış veritabanları için dizinleri dağıtmak istiyorsanız --only firestore bayrağını ekleyin. Bu komut için seçenekler referansına bakın.

Dağıtılan dizinleri listelemek için firebase firestore:indexes komutunu çalıştırın. Projenizin varsayılan veritabanından farklı bir veritabanına ilişkin dizinleri listelemek için --database=<databaseID> bayrağını ekleyin.

Firebase konsolunu kullanarak dizinlerde düzenlemeler yapıyorsanız yerel dizinler dosyanızı da güncellediğinizden emin olun. Dizinleri yönetme hakkında daha fazla bilgi için Cloud Firestore kılavuzlarına bakın.

JSON biçimi

İndeksler

indexes dizisindeki bir nesnenin şeması aşağıdaki gibidir. İsteğe bağlı özellikler ? karakter.

Cloud Firestore belge alanlarının yalnızca tek bir modda dizine eklenebileceğini, dolayısıyla bir alan nesnesinin hem order hem de arrayConfig özelliklerini içeremeyeceğini unutmayın.

  collectionGroup: string  // Labeled "Collection ID" in the Firebase console
  queryScope: string       // One of "COLLECTION", "COLLECTION_GROUP"
  fields: array
    fieldPath: string
    order?: string         // One of "ASCENDING", "DESCENDING"; excludes arrayConfig property
    arrayConfig?: string   // If this parameter used, must be "CONTAINS"; excludes order property

Alan Geçersiz Kılmaları

fieldOverrides dizisindeki bir nesnenin şeması aşağıdaki gibidir. İsteğe bağlı özellikler ? karakter.

Cloud Firestore belge alanlarının yalnızca tek bir modda dizine eklenebileceğini, dolayısıyla bir alan nesnesinin hem order hem de arrayConfig özelliklerini içeremeyeceğini unutmayın.

  collectionGroup: string  // Labeled "Collection ID" in the Firebase console
  fieldPath: string
  ttl?: boolean            // Set specified field to have TTL policy and be eligible for deletion
  indexes: array           // Use an empty array to disable indexes on this collectionGroup + fieldPath
    queryScope: string     // One of "COLLECTION", "COLLECTION_GROUP"
    order?: string         // One of "ASCENDING", "DESCENDING"; excludes arrayConfig property
    arrayConfig?: string   // If this parameter used, must be "CONTAINS"; excludes order property

TTL Politikası

Bir TTL politikası, fieldOverrides dizisi kullanılarak aşağıdaki şekilde etkinleştirilebilir veya devre dışı bırakılabilir:

  // Optional, disable index single-field collection group indexes
  fieldOverrides: [
    {
      collectionGroup: "posts",
      fieldPath: "ttlField",
      ttl: "true",  // Explicitly enable TTL on this Field.
      // Disable indexing so empty the indexes array
      indexes: []
    }
  ]

Varsayılan indekslemeyi alanda tutmak ve bir TTL politikasını etkinleştirmek için:

{
  "fieldOverrides": [
    {
      "collectionGroup": "yourCollectionGroup",
      "fieldPath": "yourFieldPath",
      "ttl": true,
      "indexes": [
        { "order": "ASCENDING", "queryScope": "COLLECTION_GROUP" },
        { "order": "DESCENDING", "queryScope": "COLLECTION_GROUP" },
        { "arrayConfig": "CONTAINS", "queryScope": "COLLECTION_GROUP" }
      ]
    }
  ]
}

Yaşam süresi (TTL) politikaları hakkında daha fazla bilgi için resmi belgeleri inceleyin.