ענן הגדרות אינדקס של Cloud Firestore

Cloud Firestore יוצר אוטומטית אינדקסים כדי לתמוך בסוגי השאילתות הנפוצים ביותר, אך מאפשר לך להגדיר אינדקסים מותאמים אישית ועקיפות אינדקס כפי שמתואר במדריכי Cloud Firestore .

אתה יכול ליצור, לשנות ולפרוס אינדקסים מותאמים אישית במסוף Firebase, או באמצעות ה-CLI. מה-CLI, ערוך את קובץ תצורת האינדקס, עם שם הקובץ המוגדר כברירת מחדל firestore.indexes.json , ופרוס באמצעות פקודת firebase deploy .

אתה יכול לייצא אינדקסים עם ה-CLI באמצעות firebase firestore:indexes .

קובץ תצורת אינדקס מגדיר אובייקט אחד המכיל מערך indexes ומערך אופציונלי fieldOverrides . הנה דוגמה:

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

פרוס תצורת אינדקס

פרוס את תצורת האינדקס שלך עם פקודת firebase deploy . אם אתה רוצה לפרוס אינדקסים רק עבור מסדי הנתונים שהוגדרו בפרויקט שלך, הוסף את הדגל --only firestore . עיין בהפניה לאפשרויות עבור פקודה זו .

כדי לרשום את האינדקסים שנפרסו, הפעל את הפקודה firebase firestore:indexes . הוסף את הדגל --database=<databaseID> לרשימת אינדקסים עבור מסד נתונים שאינו מסד הנתונים המוגדר כברירת מחדל של הפרויקט שלך.

אם אתה מבצע עריכות באינדקסים באמצעות מסוף Firebase, הקפד לעדכן גם את קובץ האינדקסים המקומיים שלך. למידע נוסף על ניהול אינדקסים, עיין במדריכי Cloud Firestore .

פורמט JSON

אינדקסים

הסכימה עבור אובייקט אחד במערך indexes היא כדלקמן. מאפיינים אופציונליים מזוהים עם ? אופי.

שים לב ששדות מסמכים של Cloud Firestore ניתנים לאינדקס רק במצב אחד, ולכן אובייקט שדה אינו יכול להכיל גם את המאפיינים order וגם arrayConfig .

  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

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) עיין בתיעוד הרשמי .