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) اسناد رسمی را مرور کنید.