Cloud Firestore tự động tạo các chỉ mục để hỗ trợ các loại truy vấn phổ biến nhất nhưng cho phép bạn xác định các chỉ mục tùy chỉnh và ghi đè chỉ mục như được mô tả trong hướng dẫn của Cloud Firestore .
Bạn có thể tạo, sửa đổi và triển khai các chỉ mục tùy chỉnh trong bảng điều khiển Firebase hoặc sử dụng CLI. Từ CLI, hãy chỉnh sửa tệp cấu hình chỉ mục của bạn, với tên tệp mặc định firestore.indexes.json
và triển khai bằng lệnh firebase deploy
.
Bạn có thể xuất chỉ mục bằng CLI bằng cách sử dụng firebase firestore:indexes
.
Tệp cấu hình chỉ mục xác định một đối tượng chứa mảng indexes
và mảng fieldOverrides
tùy chọn. Đây là một ví dụ:
{
// 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: []
}
]
}
Triển khai cấu hình chỉ mục
Triển khai cấu hình chỉ mục của bạn bằng lệnh firebase deploy
. Nếu bạn chỉ muốn triển khai các chỉ mục cho cơ sở dữ liệu được định cấu hình trong dự án của mình, hãy thêm cờ --only firestore
. Xem tài liệu tham khảo tùy chọn cho lệnh này .
Để liệt kê các chỉ mục đã triển khai, hãy chạy lệnh firebase firestore:indexes
. Thêm cờ --database=<databaseID>
để liệt kê các chỉ mục cho cơ sở dữ liệu không phải là cơ sở dữ liệu mặc định của dự án của bạn.
Nếu bạn chỉnh sửa các chỉ mục bằng bảng điều khiển Firebase, hãy đảm bảo bạn cũng cập nhật tệp chỉ mục cục bộ của mình. Để biết thêm về cách quản lý chỉ mục, hãy xem hướng dẫn về Cloud Firestore .
định dạng JSON
Chỉ mục
Lược đồ cho một đối tượng trong mảng indexes
như sau. Các thuộc tính tùy chọn được xác định bằng ?
tính cách.
Lưu ý rằng các trường tài liệu của Cloud Firestore chỉ có thể được lập chỉ mục ở một chế độ, do đó một đối tượng trường không thể chứa cả thuộc tính order
và 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
Ghi đè trường
Lược đồ cho một đối tượng trong mảng fieldOverrides
như sau. Các thuộc tính tùy chọn được xác định bằng ?
tính cách.
Lưu ý rằng các trường tài liệu của Cloud Firestore chỉ có thể được lập chỉ mục ở một chế độ, do đó một đối tượng trường không thể chứa cả thuộc tính order
và 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
Chính sách TTL
Chính sách TTL có thể được bật hoặc tắt bằng cách sử dụng mảng fieldOverrides
như sau:
// 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: []
}
]
Để giữ lập chỉ mục mặc định trong trường và bật chính sách TTL:
{
"fieldOverrides": [
{
"collectionGroup": "yourCollectionGroup",
"fieldPath": "yourFieldPath",
"ttl": true,
"indexes": [
{ "order": "ASCENDING", "queryScope": "COLLECTION_GROUP" },
{ "order": "DESCENDING", "queryScope": "COLLECTION_GROUP" },
{ "arrayConfig": "CONTAINS", "queryScope": "COLLECTION_GROUP" }
]
}
]
}
Để biết thêm thông tin về chính sách thời gian tồn tại (TTL), hãy xem lại tài liệu chính thức .