Google cam kết thúc đẩy công bằng chủng tộc cho Cộng đồng người da đen. Xem cách thực hiện.
Trang này được dịch bởi Cloud Translation API.
Switch to English

Các loại chỉ mục trong Cloud Firestore

Chỉ mục là một yếu tố quan trọng trong hoạt động của cơ sở dữ liệu. Giống như chỉ mục của một cuốn sách ánh xạ các chủ đề trong sách thành số trang, chỉ mục cơ sở dữ liệu ánh xạ các mục trong cơ sở dữ liệu đến vị trí của chúng trong cơ sở dữ liệu. Khi bạn gửi cho cơ sở dữ liệu một truy vấn, cơ sở dữ liệu có thể sử dụng một chỉ mục để nhanh chóng tra cứu vị trí của các mục bạn yêu cầu.

Trang này mô tả hai loại chỉ mục mà Cloud Firestore sử dụng, chỉ mục trường đơnchỉ mục tổng hợp .

Chỉ mục đằng sau mọi truy vấn

Nếu không có chỉ mục nào tồn tại cho một truy vấn, thì hầu hết các cơ sở dữ liệu sẽ thu thập thông tin qua từng mục nội dung của chúng, một quá trình chậm sẽ làm chậm hơn khi cơ sở dữ liệu phát triển. Cloud Firestore đảm bảo hiệu suất truy vấn cao bằng cách sử dụng các chỉ mục cho tất cả các truy vấn. Do đó, hiệu suất truy vấn phụ thuộc vào kích thước của tập kết quả chứ không phụ thuộc vào số lượng mục trong cơ sở dữ liệu.

Quản lý chỉ mục ít hơn, phát triển ứng dụng nhiều hơn

Cloud Firestore bao gồm các tính năng giúp giảm lượng thời gian bạn cần dành để quản lý các chỉ mục. Các chỉ mục cần thiết cho các truy vấn cơ bản nhất được tạo tự động cho bạn. Khi bạn sử dụng và kiểm tra ứng dụng của mình, Cloud Firestore giúp bạn xác định và tạo chỉ mục bổ sung mà ứng dụng của bạn yêu cầu.

Các loại chỉ mục

Cloud Firestore sử dụng hai loại chỉ mục: trường đơnkết hợp . Bên cạnh số lượng trường được lập chỉ mục, chỉ mục trường đơn và chỉ mục tổng hợp khác nhau về cách bạn quản lý chúng.

Chỉ mục trường đơn

Chỉ mục một trường lưu trữ một ánh xạ được sắp xếp của tất cả các tài liệu trong một tập hợp chứa một trường cụ thể. Mỗi mục nhập trong chỉ mục trường đơn ghi lại giá trị của tài liệu cho một trường cụ thể và vị trí của tài liệu trong cơ sở dữ liệu. Cloud Firestore sử dụng các chỉ mục này để thực hiện nhiều truy vấn cơ bản. Bạn quản lý các chỉ mục trường đơn bằng cách định cấu hình cài đặt lập chỉ mục tự động của cơ sở dữ liệu và miễn trừ chỉ mục.

Lập chỉ mục tự động

Theo mặc định, Cloud Firestore tự động duy trì các chỉ mục trường đơn cho từng trường trong tài liệu và từng trường con trong bản đồ. Cloud Firestore sử dụng các cài đặt mặc định sau cho các chỉ mục trường đơn:

  • Đối với mỗi trường không phải mảng và không phải bản đồ, Cloud Firestore xác định hai chỉ mục trường đơn phạm vi tập hợp , một ở chế độ tăng dần và một ở chế độ giảm dần.

  • Đối với mỗi trường bản đồ, Cloud Firestore tạo một chỉ mục tăng dần trong phạm vi bộ sưu tập và một chỉ mục giảm dần cho mỗi trường con không phải mảng và không phải bản đồ trong bản đồ.

  • Đối với mỗi trường mảng trong tài liệu, Cloud Firestore tạo và duy trì một chỉ mục chứa mảng phạm vi thu thập.

  • Chỉ mục trường đơn với phạm vi nhóm tập hợp không được duy trì theo mặc định.

Miễn trừ chỉ mục trường đơn

Bạn có thể miễn một trường khỏi cài đặt lập chỉ mục tự động của mình bằng cách tạo một trường miễn chỉ mục duy nhất. Quyền miễn lập chỉ mục ghi đè cài đặt chỉ mục tự động trên toàn cơ sở dữ liệu. Việc miễn trừ có thể kích hoạt chỉ mục trường đơn mà cài đặt lập chỉ mục tự động của bạn sẽ vô hiệu hóa hoặc vô hiệu hóa chỉ mục trường đơn mà tính năng lập chỉ mục tự động sẽ kích hoạt. Đối với các trường hợp miễn trừ có thể hữu ích, hãy xem các phương pháp lập chỉ mục tốt nhất .

Nếu bạn tạo chỉ mục trường đơn miễn trừ cho một trường bản đồ, các trường con của bản đồ sẽ kế thừa các cài đặt đó. Tuy nhiên, bạn có thể xác định các trường hợp miễn trừ chỉ số trường đơn cho các trường con cụ thể. Nếu bạn xóa một trường hợp miễn trừ cho một trường con, trường con sẽ kế thừa các thiết lập miễn trừ của trường cha, nếu chúng tồn tại hoặc các thiết lập trên toàn cơ sở dữ liệu nếu không có trường con nào tồn tại.

Để tạo và quản lý các trường hợp miễn trừ chỉ mục đơn, hãy xem Quản lý chỉ mục trong Cloud Firestore .

Chỉ mục tổng hợp

Một chỉ mục tổng hợp lưu trữ một ánh xạ được sắp xếp của tất cả các tài liệu trong một bộ sưu tập, dựa trên danh sách các trường có thứ tự để lập chỉ mục.

Cloud Firestore sử dụng chỉ mục tổng hợp để hỗ trợ các truy vấn chưa được chỉ mục trường đơn hỗ trợ.

Cloud Firestore không tự động tạo chỉ mục tổng hợp giống như đối với chỉ mục trường đơn vì số lượng lớn các kết hợp trường có thể có. Thay vào đó, Cloud Firestore giúp bạn xác định và tạo các chỉ mục tổng hợp bắt buộc khi bạn xây dựng ứng dụng của mình.

Nếu bạn thử truy vấn ở trên mà không tạo chỉ mục cần thiết trước, Cloud Firestore sẽ trả về thông báo lỗi chứa liên kết mà bạn có thể theo dõi để tạo chỉ mục bị thiếu. Điều này xảy ra bất cứ khi nào bạn thực hiện một truy vấn không được chỉ mục hỗ trợ. Bạn cũng có thể xác định và quản lý các chỉ mục tổng hợp theo cách thủ công bằng cách sử dụng bảng điều khiển hoặc bằng cách sử dụng Firebase CLI . Để biết thêm về cách tạo và quản lý chỉ mục tổng hợp, hãy xem Quản lý chỉ mục .

Chế độ lập chỉ mục và phạm vi truy vấn

Bạn định cấu hình chỉ mục trường đơn và chỉ mục tổng hợp khác nhau, nhưng cả hai đều yêu cầu bạn định cấu hình chế độ chỉ mục và phạm vi truy vấn cho chỉ mục của mình.

Chế độ chỉ mục

Khi bạn xác định một chỉ mục, bạn chọn một chế độ chỉ mục cho mỗi trường được lập chỉ mục. Chế độ chỉ mục của mỗi trường hỗ trợ các mệnh đề truy vấn cụ thể trên trường đó. Bạn có thể chọn từ các chế độ chỉ mục sau:

Chế độ chỉ mục Sự miêu tả
Tăng dần Hỗ trợ < , <= , == , >= , >in các mệnh đề truy vấn trên trường và hỗ trợ sắp xếp kết quả theo thứ tự tăng dần dựa trên giá trị trường này.
giảm dần Hỗ trợ < , <= , == , >= , >in các mệnh đề truy vấn trên trường và hỗ trợ sắp xếp kết quả theo thứ tự giảm dần dựa trên giá trị trường này.
Mảng ‑ chứa Hỗ trợ array-containsarray-contains-any mệnh đề truy vấn array-contains-any trên trường.

Phạm vi truy vấn

Mỗi chỉ mục được phân chia thành một tập hợp hoặc một nhóm tập hợp. Đây được gọi là phạm vi truy vấn của chỉ mục:

Phạm vi thu thập
Cloud Firestore tạo chỉ mục với phạm vi thu thập theo mặc định. Các chỉ mục này hỗ trợ các truy vấn trả về kết quả từ một tập hợp duy nhất.

Phạm vi nhóm thu thập
Nhóm tập hợp bao gồm tất cả các tập hợp có cùng một ID tập hợp. Để chạy truy vấn nhóm tập hợp trả về kết quả được lọc hoặc sắp xếp từ một nhóm tập hợp, bạn phải tạo chỉ mục tương ứng với phạm vi nhóm tập hợp.

Ví dụ về lập chỉ mục

Bằng cách tự động tạo các chỉ mục trường đơn cho bạn, Cloud Firestore cho phép ứng dụng của bạn nhanh chóng hỗ trợ các truy vấn cơ sở dữ liệu cơ bản nhất. Chỉ mục trường đơn cho phép bạn thực hiện các truy vấn đơn giản dựa trên giá trị trường và các bộ so sánh < , <= , == , >= , >in . Đối với các trường mảng, chúng cho phép bạn thực hiện các truy vấn array-containsarray-contains-any .

Để minh họa, hãy xem xét các ví dụ sau từ quan điểm tạo chỉ mục. Đoạn mã sau tạo một vài tài liệu city trong bộ sưu tập cities và đặt các trường name , state , country , capital , populationtags cho mỗi tài liệu:

Web
var citiesRef = db.collection("cities");

citiesRef.doc("SF").set({
    name: "San Francisco", state: "CA", country: "USA",
    capital: false, population: 860000,
    regions: ["west_coast", "norcal"] });
citiesRef.doc("LA").set({
    name: "Los Angeles", state: "CA", country: "USA",
    capital: false, population: 3900000,
    regions: ["west_coast", "socal"] });
citiesRef.doc("DC").set({
    name: "Washington, D.C.", state: null, country: "USA",
    capital: true, population: 680000,
    regions: ["east_coast"] });
citiesRef.doc("TOK").set({
    name: "Tokyo", state: null, country: "Japan",
    capital: true, population: 9000000,
    regions: ["kanto", "honshu"] });
citiesRef.doc("BJ").set({
    name: "Beijing", state: null, country: "China",
    capital: true, population: 21500000,
    regions: ["jingjinji", "hebei"] });

Giả sử cài đặt chỉ mục tự động mặc định, Cloud Firestore cập nhật một chỉ mục trường đơn tăng dần cho mỗi trường không phải mảng, một chỉ mục trường đơn giảm dần cho mỗi trường không phải mảng và một chỉ mục trường đơn chứa mảng cho trường mảng. Mỗi hàng trong bảng sau đại diện cho một mục nhập trong chỉ mục một trường:

Bộ sưu tập Trường được lập chỉ mục Phạm vi truy vấn
các thành phố name Bộ sưu tập
các thành phố trạng thái Bộ sưu tập
các thành phố country Bộ sưu tập
các thành phố capital Bộ sưu tập
các thành phố dân số Bộ sưu tập
các thành phố name Bộ sưu tập
các thành phố trạng thái Bộ sưu tập
các thành phố quốc gia Bộ sưu tập
các thành phố capital Bộ sưu tập
các thành phố dân số Bộ sưu tập
các thành phố array-contains vùng array-contains Bộ sưu tập

Các truy vấn được hỗ trợ bởi các chỉ mục trường đơn

Sử dụng các chỉ mục trường đơn được tạo tự động này, bạn có thể chạy các truy vấn đơn giản như sau:

Web
citiesRef.where("state", "==", "CA")
citiesRef.where("population", "<", 100000)
citiesRef.where("name", ">=", "San Francisco")

Bạn cũng có thể tạo các truy vấn in và compound ( == ):

Web
citiesRef.where('country', 'in', ["USA", "Japan", "China"])

// Compound equality queries
citiesRef.where("state", "==", "CO").where("name", "==", "Denver")
citiesRef.where("country", "==", "USA")
         .where("capital", "==", false)
         .where("state", "==", "CA")
         .where("population", "==", 860000)

Nếu bạn cần chạy truy vấn kết hợp sử dụng so sánh phạm vi ( < , <= , > hoặc >= ) hoặc nếu bạn cần sắp xếp theo trường khác, bạn phải tạo chỉ mục tổng hợp cho truy vấn đó.

Chỉ mục array-contains cho phép bạn truy vấn trường mảng regions :

Web
citiesRef.where("regions", "array-contains", "west_coast")
// array-contains-any and array-contains use the same indexes
citiesRef.where("regions", "array-contains-any", ["west_coast", "east_coast"])

Các truy vấn được hỗ trợ bởi chỉ mục tổng hợp

Cloud Firestore sử dụng các chỉ mục tổng hợp để hỗ trợ các truy vấn phức hợp chưa được chỉ mục trường đơn hỗ trợ. Ví dụ: bạn sẽ cần một chỉ mục tổng hợp cho các truy vấn sau:

Web
citiesRef.where("country", "==", "USA").orderBy("population", "asc")
citiesRef.where("country", "==", "USA").where("population", "<", 3800000)
citiesRef.where("country", "==", "USA").where("population", ">", 690000)
// in and == clauses use the same index
citiesRef.where("country", "in", ["USA", "Japan", "China"])
         .where("population", ">", 690000)

Các truy vấn này yêu cầu chỉ mục tổng hợp bên dưới. Vì truy vấn sử dụng một bằng ( == hoặc in ) cho trường country , bạn có thể sử dụng chế độ chỉ mục tăng dần hoặc giảm dần cho trường này. Theo mặc định, các mệnh đề bất đẳng thức áp dụng thứ tự sắp xếp tăng dần dựa trên trường trong mệnh đề bất đẳng thức.

Bộ sưu tập Các trường được lập chỉ mục Phạm vi truy vấn
các thành phố (hoặc ), dân số Bộ sưu tập

Để chạy các truy vấn tương tự, nhưng với một thứ tự sắp xếp giảm dần, bạn cần một chỉ số tổng hợp thêm theo hướng giảm dần cho population :

Web
citiesRef.where("country", "==", "USA").orderBy("population", "desc")

citiesRef.where("country", "==", "USA")
         .where("population", "<", 3800000)
         .orderBy("population", "desc")

citiesRef.where("country", "==", "USA")
         .where("population", ">", 690000)
         .orderBy("population", "desc")

citiesRef.where("country", "in", ["USA", "Japan", "China"])
         .where("population", ">", 690000)
         .orderBy("population", "desc")
Bộ sưu tập Các trường được lập chỉ mục Phạm vi truy vấn
các thành phố quốc gia , dân số Bộ sưu tập
các thành phố quốc gia , dân số Bộ sưu tập

Bạn cũng cần tạo chỉ mục tổng hợp để kết hợp truy vấn array-contains hoặc array-contains-any với các mệnh đề bổ sung.

Web
citiesRef.where("regions", "array-contains", "east_coast")
         .where("capital", "==", true)

// array-contains-any and array-contains use the same index
citiesRef.where("regions", "array-contains-any", ["west_coast", "east_coast"])
         .where("capital", "==", true)
Bộ sưu tập Các trường được lập chỉ mục Phạm vi truy vấn
các thành phố mảng chứa thẻ, (hoặc ) viết hoa Bộ sưu tập

Các truy vấn được hỗ trợ bởi chỉ mục nhóm thu thập

Để chứng minh một chỉ mục với phạm vi nhóm bộ sưu tập, hãy tưởng tượng bạn thêm một bộ sưu tập phụ landmarks vào một số tài liệu city :

Web
var citiesRef = db.collection("cities");

citiesRef.doc("SF").collection("landmarks").doc().set({
    name: "Golden Gate Bridge",
    category : "bridge" });
citiesRef.doc("SF").collection("landmarks").doc().set({
    name: "Golden Gate Park",
    category : "park" });

citiesRef.doc("DC").collection("landmarks").doc().set({
    name: "National Gallery of Art",
    category : "museum" });
citiesRef.doc("DC").collection("landmarks").doc().set({
    name: "National Mall",
    category : "park" });

Sử dụng chỉ mục trường đơn sau đây với phạm vi thu thập, bạn có thể truy vấn bộ sưu tập landmarks của một thành phố dựa trên trường category :

Bộ sưu tập Các trường được lập chỉ mục Phạm vi truy vấn
Các địa danh danh mục (hoặc ) Bộ sưu tập
Web
citiesRef.doc("SF").collection("landmarks").where("category", "==", "park")
citiesRef.doc("SF").collection("landmarks").where("category", "in", ["park", "museum"])

Bây giờ, hãy tưởng tượng rằng bạn quan tâm đến việc truy vấn các địa danh trên tất cả các thành phố. Để chạy truy vấn này trên nhóm thu thập bao gồm tất cả các tập hợp landmarks , bạn phải bật chỉ mục trường đơn landmarks với phạm vi nhóm tập hợp:

Bộ sưu tập Các trường được lập chỉ mục Phạm vi truy vấn
Các địa danh danh mục (hoặc ) Nhóm sưu tập

Với chỉ mục này được bật, bạn có thể truy vấn nhóm thu thập landmarks :

Web
var landmarksGroupRef = db.collectionGroup("landmarks");

landmarksGroupRef.where("category", "==", "park")
landmarksGroupRef.where("category", "in", ["park", "museum"])

Để chạy truy vấn nhóm tập hợp trả về kết quả đã lọc hoặc có thứ tự, bạn phải bật chỉ mục tổng hợp hoặc trường đơn tương ứng với phạm vi nhóm tập hợp. Tuy nhiên, các truy vấn nhóm tập hợp không lọc hoặc sắp xếp kết quả không yêu cầu bất kỳ định nghĩa chỉ mục bổ sung nào.

Ví dụ: bạn có thể chạy truy vấn nhóm thu thập sau mà không cần bật chỉ mục bổ sung:

Web
db.collectionGroup("landmarks").get()

Mục nhập chỉ mục

Các chỉ mục được định cấu hình của dự án, cũng như cấu trúc của tài liệu, đều ảnh hưởng đến các mục nhập chỉ mục cho tài liệu, cuối cùng được tính vào giới hạn số mục nhập chỉ mục .

Dưới đây là một ví dụ để minh họa.

Tài liệu

name : "San Francisco"
temperatures : {summer: 67, winter: 55}
neighborhoods : ["Mission", "Downtown", "Marina"]

Chỉ mục trường đơn

  • (Tự động) tên ASC & DESC
  • (Tự động) nhiệt độ ASC & DESC
  • (Tự động) vùng lân cận Mảng chứa

Chỉ mục tổng hợp

  • tên ASC, ASC vùng lân cận
  • tên DESC, vùng lân cận ASC

Các mục nhập chỉ mục kết quả

Cấu hình lập chỉ mục này dẫn đến 12 mục nhập chỉ mục sau cho tài liệu:

Mục lục Nhập cảnh
tên ASC & DESC tên: "San Francisco"
nhiệt độ ASC & DESC nhiệt độ. mùa hè: 67
nhiệt độ ASC & DESC nhiệt độ. mùa đông: 55
vùng lân cận Mảng Chứa vùng lân cận: "Mission"
vùng lân cận Mảng Chứa vùng lân cận: "Downtown"
vùng lân cận Mảng Chứa vùng lân cận: "Marina"
tên ASC, ASC vùng lân cận tên: "San Francisco", vùng lân cận: "Mission"
tên ASC, ASC vùng lân cận tên: "San Francisco", vùng lân cận: "Downtown"
tên ASC, vùng lân cận ASC tên: "San Francisco", vùng lân cận: "Marina"
tên DESC, vùng lân cận ASC tên: "San Francisco", vùng lân cận: "Mission"
tên DESC, vùng lân cận ASC tên: "San Francisco", vùng lân cận: "Downtown"
tên DESC, vùng lân cận ASC tên: "San Francisco", vùng lân cận: "Marina"

Chỉ mục và giá cả

Chỉ mục đóng góp vào chi phí lưu trữ ứng dụng của bạn. Để biết thêm về cách tính kích thước lưu trữ cho các chỉ mục, hãy xem Kích thước mục nhập chỉ mục .

Lợi dụng việc hợp nhất chỉ mục

Mặc dù Cloud Firestore sử dụng một chỉ mục cho mọi truy vấn, nhưng nó không nhất thiết yêu cầu một chỉ mục cho mỗi truy vấn. Đối với các truy vấn có nhiều mệnh đề bình đẳng ( == ) và mệnh đề orderBy tùy chọn, Cloud Firestore có thể sử dụng lại các chỉ mục hiện có. Cloud Firestore có thể hợp nhất các chỉ mục cho các bộ lọc bình đẳng đơn giản để xây dựng các chỉ mục tổng hợp cần thiết cho các truy vấn bình đẳng lớn hơn.

Bạn có thể giảm chi phí lập chỉ mục bằng cách xác định các tình huống mà bạn có thể tận dụng lợi thế của việc hợp nhất chỉ mục. Ví dụ: hãy tưởng tượng một bộ sưu tập restaurants cho ứng dụng xếp hạng nhà hàng:

  • nhà hàng

    • burgerthyme

      name : "Burger Thyme"
      category : "burgers"
      city : "San Francisco"
      editors_pick : true
      star_rating : 4

Bây giờ, hãy tưởng tượng ứng dụng này sử dụng các truy vấn như bên dưới. Lưu ý rằng ứng dụng sử dụng kết hợp các mệnh đề bình đẳng cho category , cityeditors_pick trong khi luôn sắp xếp theo star_rating tăng dần:

Web
db.collection("restaurants").where("category", "==", "burgers")
                            .orderBy("star_rating")

db.collection("restaurants").where("city", "==", "San Francisco")
                            .orderBy("star_rating")

db.collection("restaurants").where("category", "==", "burgers")
                            .where("city", "==", "San Francisco")
                            .orderBy("star_rating")

db.collection("restaurants").where("category", "==", "burgers")
                            .where("city", "==" "San Francisco")
                            .where("editors_pick", "==", true )
                            .orderBy("star_rating")

Bạn có thể tạo chỉ mục cho mỗi truy vấn:

Bộ sưu tập Các trường được lập chỉ mục Phạm vi truy vấn
nhà hàng danh mục , star_rating Bộ sưu tập
nhà hàng city, star_rating Bộ sưu tập
nhà hàng category, city, star_rating Bộ sưu tập
nhà hàng loại, thành phố, editors_pick, STAR_RATING Bộ sưu tập

Là một giải pháp tốt hơn, bạn có thể giảm số lượng chỉ mục bằng cách tận dụng khả năng của Cloud Firestore để hợp nhất các chỉ mục cho các điều khoản bình đẳng:

Bộ sưu tập Các trường được lập chỉ mục Phạm vi truy vấn
nhà hàng danh mục , star_rating Bộ sưu tập
nhà hàng city, star_rating Bộ sưu tập
nhà hàng editors_pick, star_rating Bộ sưu tập

Bộ chỉ mục này không chỉ nhỏ hơn mà còn hỗ trợ một truy vấn bổ sung:

Web
db.collection("restaurants").where("editors_pick", "==", true)
                            .orderBy("star_rating")

Giới hạn lập chỉ mục

Các giới hạn sau áp dụng cho các chỉ mục. Đối với tất cả hạn ngạch và giới hạn, hãy xem Hạn ngạch và Giới hạn .

Giới hạn Chi tiết
Số lượng chỉ mục tổng hợp tối đa cho một cơ sở dữ liệu 200
Số lượng miễn trừ chỉ mục trường đơn tối đa cho cơ sở dữ liệu 200

Số lượng mục nhập chỉ mục tối đa cho mỗi tài liệu

40.000

Số lượng mục nhập chỉ mục là tổng của các mục sau cho một tài liệu:

  • Số lượng mục nhập chỉ mục trường đơn
  • Số lượng mục nhập chỉ mục tổng hợp

Để xem cách Cloud Firestore biến một tài liệu và một tập hợp các chỉ mục thành các mục nhập chỉ mục, hãy xem ví dụ về số mục nhập chỉ mục này .

Kích thước tối đa của một mục nhập chỉ mục

7,5 KiB

Để xem cách Cloud Firestore tính toán kích thước mục nhập chỉ mục, hãy xem kích thước mục nhập chỉ mục .

Tổng kích thước tối đa của các mục nhập chỉ mục của tài liệu

8 MiB

Tổng kích thước là tổng các kích thước sau cho một tài liệu:

  • Tổng kích thước của các mục nhập chỉ mục trường đơn của tài liệu
  • Tổng kích thước của các mục nhập chỉ mục tổng hợp của tài liệu
  • Kích thước tối đa của giá trị trường được lập chỉ mục

    1500 byte

    Giá trị trường trên 1500 byte bị cắt bớt. Các truy vấn liên quan đến giá trị trường bị cắt ngắn có thể trả về kết quả không nhất quán.

    Lập chỉ mục các phương pháp hay nhất

    Đối với hầu hết các ứng dụng, bạn có thể dựa vào lập chỉ mục tự động và các liên kết thông báo lỗi để quản lý các chỉ mục của mình. Tuy nhiên, bạn có thể muốn thêm các trường hợp miễn trừ đơn lẻ trong các trường hợp sau:

    Trường hợp Sự miêu tả
    Trường chuỗi lớn

    Nếu bạn có trường chuỗi thường chứa các giá trị chuỗi dài mà bạn không sử dụng để truy vấn, bạn có thể cắt giảm chi phí lưu trữ bằng cách miễn lập chỉ mục trường.

    Tỷ lệ ghi cao vào bộ sưu tập chứa các tài liệu có giá trị tuần tự

    Nếu bạn lập chỉ mục một trường tăng hoặc giảm tuần tự giữa các tài liệu trong bộ sưu tập, chẳng hạn như dấu thời gian, thì tốc độ ghi tối đa vào bộ sưu tập là 500 lần ghi mỗi giây. Nếu bạn không truy vấn dựa trên trường có các giá trị tuần tự, bạn có thể miễn lập chỉ mục trường để bỏ qua giới hạn này.

    Ví dụ: trong một trường hợp sử dụng IoT với tốc độ ghi cao, một bộ sưu tập chứa các tài liệu có trường dấu thời gian có thể đạt đến giới hạn 500 lần ghi mỗi giây.

    Các trường mảng hoặc bản đồ lớn

    Các trường mảng hoặc bản đồ lớn có thể đạt đến giới hạn 20.000 mục nhập chỉ mục cho mỗi tài liệu. Nếu bạn không truy vấn dựa trên một mảng lớn hoặc trường bản đồ, bạn nên miễn lập chỉ mục nó.