مرجع تعریف شاخص Cloud Firestore

Cloud Firestore به طور خودکار فهرست هایی را برای پشتیبانی از رایج ترین انواع پرس و جو ایجاد می کند، اما به شما امکان می دهد فهرست های سفارشی و لغو فهرست را همانطور که در راهنماهای Cloud Firestore توضیح داده شده است، تعریف کنید.

می‌توانید ایندکس‌های سفارشی را در کنسول Firebase یا با استفاده از CLI ایجاد، اصلاح و مستقر کنید. از CLI، فایل پیکربندی فهرست خود را با نام فایل پیش فرض firestore.indexes.json ویرایش کنید و با استفاده از فرمان firebase deploy آن را مستقر کنید.

با استفاده از firebase firestore:indexes می‌توانید با CLI فهرست‌ها را صادر کنید.

یک فایل پیکربندی فهرست، یک شی شامل یک آرایه indexes و یک آرایه اختیاری fieldOverrides را تعریف می کند. در اینجا یک مثال است:

{
  // Required, specify compound and vector indexes
  indexes: [
    {
      collectionGroup: "posts",
      queryScope: "COLLECTION",
      fields: [
        { fieldPath: "author", arrayConfig: "CONTAINS" },
        { fieldPath: "timestamp", order: "DESCENDING" }
      ]
    },
    {
      collectionGroup: "coffee-beans",
      queryScope: "COLLECTION",
      fields: [
        {
          fieldPath: "embedding_field",
          vectorConfig: { dimension: 256, flat: {} }
        }
      ]
    }
  ],

  // 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: []
    }
  ]
}

یک پیکربندی شاخص ایجاد کنید

پیکربندی فهرست خود را با دستور firebase deploy اجرا کنید. اگر فقط می خواهید برای پایگاه داده های پیکربندی شده در پروژه خود ایندکس ها را مستقر کنید، پرچم --only firestore را اضافه کنید. مرجع گزینه های این دستور را ببینید.

برای فهرست کردن ایندکس های مستقر شده، دستور firebase firestore:indexes را اجرا کنید. پرچم --database=<databaseID> را به فهرست فهرست های پایگاه داده ای غیر از پایگاه داده پیش فرض پروژه خود اضافه کنید.

اگر با استفاده از کنسول Firebase، فهرست‌ها را ویرایش می‌کنید، مطمئن شوید که فایل فهرست‌های محلی خود را نیز به‌روزرسانی کرده‌اید. برای اطلاعات بیشتر در مورد مدیریت فهرست‌ها، به راهنمای Cloud Firestore مراجعه کنید.

فرمت JSON

شاخص ها

طرح واره برای یک شی در آرایه indexes به صورت زیر است. خواص اختیاری با ? شخصیت.

توجه داشته باشید که فیلدهای سند Cloud Firestore فقط در یک حالت می‌توانند نمایه شوند، بنابراین یک شی فیلد فقط می‌تواند حاوی یکی از ویژگی‌های order ، arrayConfig و vectorConfig باشد.

  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 and vectorConfig properties
    arrayConfig?: string   // If this parameter used, must be "CONTAINS"; excludes order and vectorConfig properties
    vectorConfig?: object  // Indicates that this is a vector index; excludes order and arrayConfig properties
      dimension: number    // The resulting index will only include vectors of this dimension
      flat: {}             // Indicates the vector index is a flat index

Field Overrides

طرح یک شی در آرایه fieldOverrides به شرح زیر است. خواص اختیاری با ? شخصیت.

توجه داشته باشید که فیلدهای سند Cloud Firestore فقط در یک حالت می‌توانند نمایه شوند، بنابراین یک شی فیلد نمی‌تواند هر دو ویژگی order و arrayConfig را داشته باشد.

  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

یک خط مشی TTL را می توان با استفاده از آرایه fieldOverrides به صورت زیر فعال یا غیرفعال کرد:

  // 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: []
    }
  ]

برای حفظ نمایه سازی پیش فرض در فیلد و فعال کردن یک خط مشی TTL:

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

برای اطلاعات بیشتر در مورد خط‌مشی‌های زمان تا زندگی (TTL) اسناد رسمی را مرور کنید.