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