Tham chiếu định nghĩa chỉ mục đám mây Firestore

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 orderarrayConfig .

  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 orderarrayConfig .

  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 .