Trang này mô tả cách quản lý chỉ mục. Để tìm hiểu thêm về chỉ mục, hãy xem bài viết Tổng quan về chỉ mục.
Trước khi bắt đầu
Trước khi có thể tạo chỉ mục trong Cloud Firestore, hãy đảm bảo rằng bạn được chỉ định một trong các vai trò sau:
roles/datastore.ownerroles/datastore.indexAdminroles/editorroles/owner
Để cấp một vai trò, hãy xem phần Cấp một vai trò. Để biết thêm thông tin về các vai trò Cloud Firestore và quyền liên quan, hãy xem bài viết Vai trò được xác định trước.
Nếu bạn đã xác định vai trò tuỳ chỉnh, hãy chỉ định tất cả các quyền sau đây để tạo chỉ mục:
datastore.indexes.createdatastore.indexes.deletedatastore.indexes.getdatastore.indexes.listdatastore.indexes.update
Tạo chỉ mục
Để tạo chỉ mục, hãy hoàn tất các bước sau:
MongoDB API
Sử dụng phương thức createIndex() để tạo chỉ mục. Ví dụ:
-
db.restaurants.createIndex({"cuisine" : 1})
-
db.restaurants.createIndex({"cuisine" : 1}, {sparse: true})
-
Việc tạo chỉ mục bằng
db.runCommand()cũng được hỗ trợ với tối đa một chỉ mục.db.runCommand({"createIndexes":"restaurant", "indexes": [{"key": {"cuisine":1}, "name": "cuisine_index"}]})
Hãy lưu ý các giới hạn sau:
- Bạn chỉ có thể tạo một chỉ mục cho mỗi yêu cầu.
db.collection.createIndexes()không được hỗ trợ. - Nhật ký kiểm tra cho việc tạo chỉ mục bằng MongoDB API sử dụng tên phương thức
google.firestore.admin.v1.FirestoreAdmin.CreateIndex. - Để biết các tuỳ chọn chỉ mục được hỗ trợ, hãy xem phần chỉ mục và thuộc tính chỉ mục.
bảng điều khiển của Firebase
-
Trong bảng điều khiển của Firebase, hãy chuyển đến trang Firestore Database (Cơ sở dữ liệu Firestore).
- Chọn một cơ sở dữ liệu trong danh sách cơ sở dữ liệu.
- Trong thẻ Chỉ mục, hãy nhấp vào Tạo chỉ mục.
- Nhập Mã bộ sưu tập.
- Thêm một hoặc nhiều đường dẫn trường và chọn một tuỳ chọn chỉ mục cho mỗi đường dẫn.
- Chọn một tuỳ chọn về sự hiện diện của trường, không thưa hoặc thưa.
- Bạn có thể đặt tuỳ chọn multikey index (không bắt buộc).
- Nhấp vào Tạo.
- Chỉ mục mới của bạn sẽ xuất hiện trong danh sách chỉ mục và Cloud Firestore sẽ bắt đầu tạo chỉ mục. Khi chỉ mục được tạo, bạn sẽ thấy dấu kiểm màu xanh lục bên cạnh chỉ mục đó. Nếu chỉ mục không được tạo, hãy xem phần Lỗi tạo chỉ mục để biết các nguyên nhân có thể xảy ra.
gcloud CLI
Để tạo chỉ mục, hãy dùng lệnh gcloud firestore indexes composite create. Thiết lập api-scope thành mongodb-compatible-api.
gcloud firestore indexes composite create \ --database='DATABASE_ID' \ --collection-group=COLLECTION \ --field-config=FIELD_CONFIGURATION \ --query-scope=collection-group \ --density=dense \ --api-scope=mongodb-compatible-api
Thay thế nội dung sau:
- DATABASE_ID: mã nhận dạng cơ sở dữ liệu.
- COLLECTION: tên tập hợp.
- FIELD_CONFIGURATION: cấu hình trường. Đối với mỗi trường, hãy thêm
--field-config=field-path=. Ví dụ:--field-config=field-path=user-id,order=descending \ --field-config=field-path=score,order=descendingĐể biết thêm thông tin về cách định cấu hình các trường này, hãy xem bài viết
--field-config.
Để tạo chỉ mục thưa, hãy đặt --density=sparse-any.
Để tạo chỉ mục nhiều khoá, hãy thêm cờ --multikey.
Để tạo một chỉ mục duy nhất, hãy thêm cờ --unique.
Terraform
Sử dụng tài nguyên google_firestore_index và đặt api_scope thành MONGODB_COMPATIBLE_API và query_scope thành COLLECTION_GROUP.
resource "google_firestore_index" "index" { database = "DATABASE_ID" collection = "COLLECTION" api_scope = "MONGODB_COMPATIBLE_API" query_scope = "COLLECTION_GROUP" // You can include multiple field blocks fields { field_path = "FIELD_PATH" order = "ORDER" } // Optional multikey = true density = "DENSITY" }
Thay thế nội dung sau:
- DATABASE_ID: Mã cơ sở dữ liệu cho cơ sở dữ liệu bạn chọn
- COLLECTION: Tên của tập hợp cần lập chỉ mục
- FIELD_PATH: Tên của trường cần lập chỉ mục
- ORDER: Một trong số
ASCENDINGhoặcDESCENDING - DENSITY: Một trong số
SPARSE_ANYhoặcDENSE
Tạo chỉ mục văn bản
Tạo chỉ mục văn bản nếu bạn muốn thực hiện tìm kiếm văn bản cho các chuỗi cụ thể trong một tập hợp.
Để tạo chỉ mục văn bản cho bộ sưu tập, hãy hoàn tất các bước sau:
MongoDB API
Sử dụng phương thức createIndex() để tạo chỉ mục văn bản.
Trong ví dụ sau, khi một tài liệu được ghi vào tập hợp cities có các trường country hoặc food được điền sẵn, các trường này sẽ được lập chỉ mục cho mục đích tìm kiếm.
db.cities.createIndex({"country": "text", "food": "text"})
Trường phải là một chuỗi hoặc một mảng chuỗi cần được lập chỉ mục.
Chỉ mục mảng không được lập chỉ mục tìm kiếm. Do đó, việc lập chỉ mục a.1.b sẽ lập chỉ mục something trong {a: {1: {b: something}}}, nhưng không lập chỉ mục trong {a: [one, {b: something}]}.
Bạn cũng có thể tạo chỉ mục bằng db.runCommand(). Bạn chỉ có thể có một chỉ mục văn bản cho mỗi tập hợp, nhưng có thể tạo nhiều chỉ mục thuộc nhiều loại trong một db.runCommand(). Ví dụ sau đây sử dụng db.runCommand() để tạo chỉ mục văn bản:
db.runCommand({
createIndexes: "cities",
indexes: [
{
key: { "country": "text", "food": "text" },
name: "country_text_food_text"
}
]
})
Chỉ định ngôn ngữ mặc định
Bạn cũng có thể tuỳ ý chỉ định ngôn ngữ mặc định hoặc đường dẫn trường trong tài liệu sẽ chứa ngôn ngữ mặc định.
Trong ví dụ sau, myLanguageField được chỉ định là language_override. Khi một tài liệu trong tập hợp cities chứa một trường có tên là myLanguageField, giá trị của trường đó sẽ được dùng để xác định ngôn ngữ lập chỉ mục trường country cho tài liệu cụ thể đó. Giá trị đó sẽ ghi đè ngôn ngữ mặc định của french.
db.cities.createIndex({"country": "text"}, {"default_language": "french", "language_override": "myLanguageField"})
- Bạn có thể nhập ngôn ngữ dưới dạng tên đầy đủ (
english) hoặc mã ngôn ngữ ISO gồm hai chữ cái (en). - Nếu bạn không đặt ngôn ngữ mặc định, thì Cloud Firestore sẽ mặc định là tiếng Anh.
- Trường ghi đè ngôn ngữ phải là trường cấp cao nhất. Nếu bạn không đặt, trường ghi đè ngôn ngữ sẽ mặc định là
language. - Nếu bạn đặt ngôn ngữ mặc định thành ký tự
null, thì Cloud Firestore sẽ không sử dụng bất kỳ trường nào làm ngôn ngữ ghi đè.
Mở rộng để xem danh sách ngôn ngữ được hỗ trợ
| Mã ngôn ngữ | Tên ngôn ngữ |
|---|---|
| "und" | Tự động phát hiện |
| "af" | Tiếng Hà Lan ở Nam Phi |
| "ak" | Tiếng Akan |
| "sq" | Tiếng Albania |
| "am" | Tiếng Amhara |
| "ar" | Tiếng Ả Rập |
| "hy" | Tiếng Armenia |
| "az" | Tiếng Azerbaijan |
| "eu" | Tiếng Basque |
| "be" | Tiếng Belarus |
| "bn" | Tiếng Bangla |
| "bs" | Tiếng Bosnia |
| "bg" | Tiếng Bungary |
| "my" | Tiếng Miến Điện |
| "ca" | Tiếng Catalan |
| "ceb" | Tiếng Cebuano |
| "chr" | Chữ Cherokee |
| "zh" | Tiếng Trung |
| "zh-Hant" | Tiếng Trung_Phồn thể |
| "hr" | Tiếng Croatia |
| "cs" | Tiếng Séc |
| "da" | Tiếng Đan Mạch |
| "nl" | Tiếng Hà Lan |
| "vi" | Tiếng Anh |
| "eo" | Tiếng Esperanto |
| "et" | Tiếng Estonia |
| "fil" | Tiếng Philippines |
| "fi" | Tiếng Phần Lan |
| "vi" | Tiếng Pháp |
| "gl" | Tiếng Galicia |
| "ka" | Tiếng Gruzia |
| "de" | Tiếng Đức |
| "el" | Tiếng Hy Lạp |
| "gu" | Tiếng Gujarat |
| "ht" | Tiếng Creole_Haiti |
| "ha" | Tiếng Hausa |
| "haw" | Hawaii |
| "iw" | Tiếng Do Thái |
| "chào" | Tiếng Hindi |
| "hmn" | Tiếng Hmong |
| "hu" | Tiếng Hungary |
| "is" | Tiếng Iceland |
| "ig" | Tiếng Igbo |
| "id" | Tiếng Indonesia |
| "ga" | Tiếng Ireland |
| "it" | Tiếng Ý |
| "ja" | Tiếng Nhật |
| "jv" | Tiếng Java |
| "kn" | Tiếng Kannada |
| "kk" | Tiếng Kazakh |
| "km" | Tiếng Khmer |
| "ko" | Tiếng Hàn |
| "lo" | Tiếng Lào |
| "la" | Tiếng Latinh |
| "lv" | Tiếng Latvia |
| "lt" | Tiếng Lithuania |
| "lb" | Tiếng Luxembourg |
| "mk" | Tiếng Macedonia |
| "mg" | Tiếng Malagasy |
| "ms" | Tiếng Malay |
| "ml" | Tiếng Malayalam |
| "mt" | Tiếng Malta |
| "mi" | Tiếng Maori |
| "mr" | Tiếng Marathi |
| "mfe" | Tiếng Morisyen |
| "mn" | Tiếng Mông Cổ |
| "sr-ME" | Tiếng Serbia_Montenegro |
| "ne" | Tiếng Nepal |
| "không" | Tiếng Na Uy |
| "ny" | Tiếng Nyanja |
| "hoặc" | Tiếng Odia |
| "fa" | Tiếng Ba Tư |
| "pl" | Tiếng Ba Lan |
| "pt-BR" | Tiếng Bồ Đào Nha_Brazil |
| "pt-PT" | Tiếng Bồ Đào Nha_Bồ Đào Nha |
| "pa" | Tiếng Punjab |
| "ro" | Tiếng Rumani |
| "ru" | Tiếng Nga |
| "gd" | Tiếng Gaelic Scotland |
| "sr" | Tiếng Serbia |
| "st" | Tiếng Nam Sotho |
| "si" | Tiếng Sinhala |
| "sk" | Tiếng Slovak |
| "sl" | Tiếng Slovenia |
| "so" | Tiếng Somali |
| "es" | Tiếng Tây Ban Nha |
| "su" | Tiếng Sunda |
| "sw" | Tiếng Swahili |
| "sv" | Tiếng Thuỵ Điển |
| "tg" | Tiếng Tajik |
| "ta" | Tiếng Tamil |
| "te" | Tiếng Telugu |
| "th" | Tiếng Thái |
| "tr" | Tiếng Thổ Nhĩ Kỳ |
| "uk" | Tiếng Ukraina |
| "ur" | Tiếng Urdu |
| "uz" | Tiếng Uzbek |
| "vi" | Tiếng Việt |
| "cy" | Tiếng Wales |
| "yi" | Tiếng Yiddish |
| "yo" | Tiếng Yoruba |
| "zu" | Tiếng Zulu |
Phân vùng chỉ mục văn bản
Bạn cũng có thể phân vùng chỉ mục bằng một trường để có thể lọc truy vấn theo một giá trị trường cụ thể. Cấu hình này cho phép bạn chạy các truy vấn hiệu quả hơn nếu bạn luôn cần lọc một trường cụ thể trong chỉ mục mà bạn đang truy vấn.
Để tạo chỉ mục có phân vùng, hãy định cấu hình trường firestoreOptions như sau:
db.runCommand({
createIndexes: "cities",
indexes: [
{
key: { "country": "text", "food": "text"},
name: "country_text_food_text"
firestoreOptions: {"customPartitionFields": ["PARTITIONED_FIELD"]
}
]
})
Địa điểm:
PARTITIONED_FIELDlà tên của trường được dùng cho phân vùng. Giá trị này phải là một chuỗi và phải tham chiếu đến một trường cấp cao nhất. Khi chạy một truy vấn đối với chỉ mục được phân vùng, bạn có thể lọc kết quả dựa trên giá trị của trường này. Ví dụ: bạn có thể phân vùng chỉ mục bằngcity. Nếu bạn xác định trườngcitytrong chỉ mục văn bản, thì người dùng có thể truy vấn một thành phố cụ thể.Phân vùng chỉ được có một trường. Nếu phân vùng một chỉ mục, thì bạn chỉ có thể chạy các truy vấn trong đó trường được phân vùng được chỉ định.
Giới hạn
- Bạn chỉ có thể tạo một chỉ mục cho mỗi yêu cầu.
- Nhật ký kiểm tra cho việc tạo chỉ mục bằng API MongoDB sử dụng tên phương thức
google.firestore.admin.v1.FirestoreAdmin.CreateIndex. - Để biết các tuỳ chọn chỉ mục được hỗ trợ, hãy xem phần chỉ mục và thuộc tính chỉ mục.
bảng điều khiển của Firebase
Trong bảng điều khiển của Firebase, hãy chuyển đến trang Firestore Database (Cơ sở dữ liệu Firestore).
Chọn một cơ sở dữ liệu trong danh sách cơ sở dữ liệu.
Trong thẻ Chỉ mục, hãy nhấp vào Tạo chỉ mục.
Nhập Mã bộ sưu tập.
Thêm một hoặc nhiều đường dẫn trường và chọn một tuỳ chọn chỉ mục cho mỗi đường dẫn.
Nhấp vào Tạo.
Chỉ mục mới của bạn sẽ xuất hiện trong danh sách chỉ mục và các thao tác tương thích với MongoDB sẽ bắt đầu tạo chỉ mục của bạn. Khi chỉ mục được tạo, bạn sẽ thấy dấu kiểm màu xanh lục bên cạnh chỉ mục đó. Nếu chỉ mục không được tạo, hãy xem phần Lỗi tạo chỉ mục để biết các nguyên nhân có thể xảy ra.
gcloud CLI
Để tạo chỉ mục văn bản, hãy dùng lệnh gcloud firestore indexes composite create. Thiết lập --api-scope thành mongodb-compatible-api.
gcloud firestore indexes composite create \ --database='DATABASE_ID' \ --collection-group=COLLECTION_GROUP \ --field-config=field-path=FIELD_NAME,search-config='{"text-spec": {"index-specs": [{"index-type": "tokenized", "match-type": "match-globally"}]}}' \ --api-scope=mongodb-compatible-api \ --search-index-options=text-language=en \ --async
Thay thế nội dung sau:
- DATABASE_ID: mã nhận dạng cơ sở dữ liệu.
- COLLECTION_GROUP: mã nhận dạng của tập hợp cần lập chỉ mục.
- FIELD_NAME: tên của trường cần lập chỉ mục.
Cờ --async chạy thao tác tạo chỉ mục ở chế độ nền.
Tạo chỉ mục 2dsphere
Tạo chỉ mục 2dsphere để thực hiện các truy vấn không gian địa lý và tìm kiếm tài liệu tồn tại trong một phạm vi nhất định từ một kinh độ và vĩ độ cụ thể.
Để tạo chỉ mục 2dsphere cho tập hợp của bạn, hãy hoàn tất các bước sau:
MongoDB API
Sử dụng phương thức createIndex() để tạo chỉ mục. Ví dụ:
db.restaurants.createIndex({"location" : "2dsphere", "region": "2dsphere"})
Việc tạo chỉ mục bằng db.runCommand() cũng được hỗ trợ với tối đa một chỉ mục:
db.runCommand({
createIndexes: "restaurants",
indexes: [
{
key: { "location": "2dsphere", "region": "2dsphere" },
name: "location_2dsphere_region_2dsphere"
}
]
})
Phân vùng chỉ mục 2dsphere
Bạn cũng có thể phân vùng chỉ mục bằng một trường để có thể lọc truy vấn theo một giá trị trường cụ thể. Cấu hình này cho phép bạn chạy các truy vấn hiệu quả hơn nếu bạn luôn cần lọc một trường cụ thể trong chỉ mục mà bạn đang truy vấn.
Để tạo chỉ mục có phân vùng, hãy định cấu hình trường firestoreOptions như sau:
db.runCommand({
createIndexes: "restaurants",
indexes: [
{
key: { "location": "2dsphere", "region": "2dsphere" },
name: "location_2dsphere_region_2dsphere"
firestoreOptions: {"customPartitionFields": ["PARTITIONED_FIELD"]
}
]
})
Địa điểm:
PARTITIONED_FIELDlà tên của trường được dùng cho phân vùng. Khi chạy một truy vấn đối với chỉ mục được phân vùng, bạn có thể lọc kết quả dựa trên giá trị của trường này. Ví dụ: nếu chỉ mục của bạn có trườngregioncho vị trí theo khu vực, bạn có thể phân vùng chỉ mục bằngregionđể người dùng có thể truy vấn các nhà hàng trong khu vực của họ.Nếu phân vùng một chỉ mục, thì bạn chỉ có thể chạy các truy vấn trong đó trường được phân vùng được chỉ định.
Giới hạn
- Bạn chỉ có thể tạo một chỉ mục cho mỗi yêu cầu.
- Nhật ký kiểm tra cho việc tạo chỉ mục bằng API MongoDB sử dụng tên phương thức
google.firestore.admin.v1.FirestoreAdmin.CreateIndex. - Để biết các tuỳ chọn chỉ mục được hỗ trợ, hãy xem phần chỉ mục và thuộc tính chỉ mục.
bảng điều khiển của Firebase
Trong bảng điều khiển của Firebase, hãy chuyển đến trang Firestore Database (Cơ sở dữ liệu Firestore).
Chọn một cơ sở dữ liệu trong danh sách cơ sở dữ liệu.
Trong thẻ Chỉ mục, hãy nhấp vào Tạo chỉ mục.
Nhập Mã bộ sưu tập.
Thêm một hoặc nhiều đường dẫn trường và chọn một tuỳ chọn chỉ mục cho mỗi đường dẫn.
Nhấp vào Tạo.
Chỉ mục mới của bạn sẽ xuất hiện trong danh sách chỉ mục và các thao tác tương thích với MongoDB sẽ bắt đầu tạo chỉ mục của bạn. Khi chỉ mục được tạo, bạn sẽ thấy dấu kiểm màu xanh lục bên cạnh chỉ mục đó. Nếu chỉ mục không được tạo, hãy xem phần Lỗi tạo chỉ mục để biết các nguyên nhân có thể xảy ra.
gcloud CLI
Để tạo chỉ mục 2dsphere, hãy dùng lệnh gcloud firestore indexes composite create. Thiết lập --api-scope thành mongodb-compatible-api.
gcloud firestore indexes composite create \
--database='DATABASE_ID' \
--collection-group=COLLECTION_GROUP \
--field-config=field-path=FIELD_NAME,search-config='{"geo-spec": {}}' \
--api-scope=mongodb-compatible-api \
--asyncThay thế nội dung sau:
- DATABASE_ID: mã nhận dạng cơ sở dữ liệu.
- COLLECTION_GROUP: mã nhận dạng của tập hợp cần lập chỉ mục.
- FIELD_NAME: tên của trường cần lập chỉ mục.
Cờ --async chạy thao tác tạo chỉ mục ở chế độ nền.
Xoá chỉ mục
Để xoá một chỉ mục, hãy hoàn tất các bước sau:
MongoDB API
Sử dụng phương thức dropIndex() để xoá chỉ mục. Ví dụ:
Xoá chỉ mục bằng tên chỉ mục
db.restaurants.dropIndex("cuisine_index")
Xoá chỉ mục bằng định nghĩa chỉ mục
db.restaurants.dropIndex({"cuisine" : 1})
bảng điều khiển của Firebase
-
Trong bảng điều khiển của Firebase, hãy chuyển đến trang Firestore Database (Cơ sở dữ liệu Firestore).
- Chọn một cơ sở dữ liệu trong danh sách cơ sở dữ liệu.
- Nhấp vào thẻ Chỉ mục.
- Trong danh sách chỉ mục, hãy chọn Xoá từ nút Thêm cho chỉ mục mà bạn muốn xoá.
- Nhấp vào Xoá chỉ mục.
gcloud CLI
Để tìm tên của chỉ mục, hãy sử dụng lệnh
gcloud firestore indexes composite list.gcloud firestore indexes composite list \ --database='DATABASE_ID'
Thay thế DATABASE_ID bằng mã nhận dạng cơ sở dữ liệu.
-
Để xoá chỉ mục, hãy sử dụng lệnh
gcloud firestore indexes composite delete.gcloud firestore indexes composite delete INDEX_NAME \ --database='DATABASE_ID'
Thay thế nội dung sau:
- INDEX_NAME: tên của một chỉ mục
- DATABASE_ID: mã cơ sở dữ liệu
Thời gian tạo chỉ mục
Để tạo chỉ mục, Cloud Firestore phải tạo chỉ mục rồi điền các mục nhập chỉ mục bằng dữ liệu hiện có. Thời gian cần thiết để tạo một chỉ mục được xác định theo những yếu tố sau:
Thời gian tối thiểu để tạo chỉ mục là vài phút, ngay cả đối với cơ sở dữ liệu trống.
Thời gian cần thiết để bổ sung các mục nhập chỉ mục phụ thuộc vào lượng dữ liệu hiện có thuộc về chỉ mục mới. Càng có nhiều giá trị trường khớp với định nghĩa chỉ mục, thì càng mất nhiều thời gian để điền lại các mục chỉ mục.
Quản lý các thao tác chạy trong thời gian dài
Bản dựng chỉ mục là thao tác chạy trong thời gian dài. Các phần sau đây mô tả cách xử lý các thao tác chạy trong thời gian dài đối với chỉ mục.
Sau khi bạn bắt đầu tạo chỉ mục, Cloud Firestore sẽ gán cho thao tác một tên riêng biệt. Tên thao tác có tiền tố là projects/PROJECT_ID/databases/DATABASE_ID/operations/, ví dụ:
projects/PROJECT_ID/databases/DATABASE_ID/operations/ASA1MTAwNDQxNAgadGx1YWZlZAcSeWx0aGdpbi1zYm9qLW5pbWRhEgopEg
Bạn có thể bỏ qua tiền tố khi chỉ định tên thao tác cho lệnh describe.
Liệt kê tất cả các thao tác chạy trong thời gian dài
Để liệt kê các thao tác chạy trong thời gian dài, hãy sử dụng lệnh gcloud firestore operations list. Lệnh này liệt kê các thao tác đang diễn ra và đã hoàn tất gần đây.
Các thao tác sẽ được liệt kê trong vài ngày sau khi hoàn tất:
gcloud firestore operations list
Kiểm tra trạng thái hoạt động
Thay vì liệt kê tất cả các thao tác chạy trong thời gian dài, bạn có thể liệt kê thông tin chi tiết của một thao tác:
gcloud firestore operations describe operation-name
Đang ước tính thời gian hoàn thành
Khi thao tác của bạn chạy, hãy xem giá trị của trường state để biết trạng thái tổng thể của thao tác.
Yêu cầu về trạng thái của một thao tác diễn ra trong thời gian dài cũng trả về các chỉ số
workEstimated và workCompleted. workEstimated cho biết tổng số tài liệu ước tính mà một thao tác sẽ xử lý. workCompleted
cho biết số lượng tài liệu đã được xử lý cho đến nay. Sau khi thao tác hoàn tất,
workCompleted phản ánh tổng số tài liệu
thực sự được xử lý, có thể khác với giá trị của workEstimated.
Để ước tính tiến trình của một thao tác, hãy chia workCompleted cho workEstimated.
Sau đây là ví dụ về tiến trình tạo chỉ mục:
{
"operations": [
{
"name": "projects/project-id/operations/AyAyMDBiM2U5NTgwZDAtZGIyYi0zYjc0LTIzYWEtZjg1ZGdWFmZWQHEjF0c2Flc3UtcmV4ZWRuaS1uaW1kYRUKSBI",
"metadata": {
"@type": "type.googleapis.com/google.firestore.admin.v1.IndexOperationMetadata",
"common": {
"operationType": "CREATE_INDEX",
"startTime": "2020-06-23T16:52:25.697539Z",
"state": "PROCESSING"
},
"progressDocuments": {
"workCompleted": "219327",
"workEstimated": "2198182"
}
},
},
...
Khi một thao tác hoàn tất, nội dung mô tả thao tác sẽ chứa "done": true. Xem giá trị của trường state để biết kết quả của thao tác. Nếu trường done không được đặt trong phản hồi, thì thao tác chưa hoàn tất.