Method: projects.databases.documents.partitionQuery

Phân vùng một truy vấn bằng cách trả về các con trỏ phân vùng có thể dùng để chạy truy vấn song song. Con trỏ phân vùng được trả về là các điểm phân tách có thể được documents.runQuery sử dụng làm điểm bắt đầu/điểm cuối cho kết quả truy vấn.

Yêu cầu HTTP

POST https://firestore.googleapis.com/v1beta1/{parent=projects/*/databases/*/documents}:partitionQuery

URL sử dụng cú pháp Chuyển mã gRPC.

Tham số đường dẫn

Tham số
parent

string

Bắt buộc. Tên tài nguyên gốc. Theo định dạng: projects/{projectId}/databases/{databaseId}/documents. Tên tài nguyên tài liệu không được hỗ trợ; chỉ có thể chỉ định tên tài nguyên cơ sở dữ liệu.

Nội dung yêu cầu

Nội dung yêu cầu chứa dữ liệu có cấu trúc sau:

Biểu diễn dưới dạng JSON
{
  "partitionCount": string,
  "pageToken": string,
  "pageSize": integer,

  // Union field query_type can be only one of the following:
  "structuredQuery": {
    object (StructuredQuery)
  }
  // End of list of possible types for union field query_type.

  // Union field consistency_selector can be only one of the following:
  "readTime": string
  // End of list of possible types for union field consistency_selector.
}
Trường
partitionCount

string (int64 format)

Số điểm phân vùng tối đa mong muốn. Các phân vùng có thể được trả về trên nhiều trang kết quả. Số phải là số dương. Số lượng phân vùng thực tế được trả về có thể ít hơn.

Ví dụ: bạn có thể đặt giá trị này thấp hơn 1 so với số lượng truy vấn song song sẽ chạy, hoặc trong khi chạy một công việc quy trình dữ liệu, ít hơn 1 so với số lượng trình thực thi hoặc thực thể điện toán có sẵn.

pageToken

string

Giá trị nextPageToken được trả về từ lệnh gọi trước đó đến documents.partitionQuery. Giá trị này có thể được dùng để nhận một tập hợp kết quả bổ sung. Không có sự đảm bảo về thứ tự giữa các tập hợp kết quả. Do đó, việc sử dụng nhiều tập hợp kết quả sẽ yêu cầu phải hợp nhất các tập hợp kết quả khác nhau.

Ví dụ: hai lệnh gọi tiếp theo sử dụng pageToken có thể trả về:

  • con trỏ B, con trỏ M, con trỏ Q
  • con trỏ A, con trỏ U, con trỏ W

Để có được bộ kết quả hoàn chỉnh theo thứ tự tương ứng với kết quả của truy vấn được cung cấp cho documents.partitionQuery, các bộ kết quả cần được hợp nhất: con trỏ A, con trỏ B, con trỏ M, con trỏ Q, con trỏ U, con trỏ W

pageSize

integer

Số lượng phân vùng tối đa cần trả về trong lệnh gọi này, tuân theo partitionCount.

Ví dụ: nếu partitionCount = 10 và pageSize = 8, lệnh gọi đầu tiên đến documents.partitionQuery sẽ trả về tối đa 8 phân vùng và nextPageToken nếu có nhiều kết quả hơn. Lệnh gọi thứ hai đến document.partitionQuery sẽ trả về tối đa 2 phân vùng, để hoàn thành tổng số 10 phân vùng được chỉ định trong partitionCount.

Trường hợp query_type. Truy vấn để phân vùng. query_type chỉ có thể là một trong những trạng thái sau:
structuredQuery

object (StructuredQuery)

Cụm từ tìm kiếm có cấu trúc. Truy vấn phải chỉ định bộ sưu tập với tất cả các thành phần con cháu và được sắp xếp theo thứ tự tăng dần tên. Các bộ lọc khác, thứ tự theo thứ tự, giới hạn, độ lệch và con trỏ bắt đầu/kết thúc không được hỗ trợ.

Trường hợp consistency_selector. Chế độ nhất quán cho yêu cầu này. Nếu bạn không đặt chính sách này, thì chế độ mặc định sẽ là mức độ nhất quán cao. consistency_selector chỉ có thể là một trong những trạng thái sau:
readTime

string (Timestamp format)

Đọc tài liệu ở một thời điểm nhất định.

Đây phải là dấu thời gian có độ chính xác tính bằng micrô giây trong vòng 1 giờ qua, hoặc nếu tính năng Khôi phục đúng thời điểm được bật, thì bạn có thể thêm dấu thời gian là toàn bộ phút trong 7 ngày qua.

Dấu thời gian ở định dạng "Zulu" RFC3339 UTC, với độ phân giải nano giây và tối đa 9 chữ số phân số. Ví dụ: "2014-10-02T15:01:23Z""2014-10-02T15:01:23.045123456Z".

Nội dung phản hồi

Câu trả lời cho Firestore.PartitionQuery.

Nếu thành công, phần nội dung phản hồi sẽ chứa dữ liệu có cấu trúc sau:

Biểu diễn dưới dạng JSON
{
  "partitions": [
    {
      object (Cursor)
    }
  ],
  "nextPageToken": string
}
Trường
partitions[]

object (Cursor)

Kết quả phân vùng. Mỗi phân vùng là một điểm phân tách mà accounts.runQuery có thể sử dụng làm điểm bắt đầu hoặc điểm cuối cho kết quả truy vấn. Các yêu cầu document.runQuery phải được thực hiện bằng cùng một truy vấn được cung cấp cho yêu cầu document.partitionQuery này. Con trỏ phân vùng sẽ được sắp xếp theo cùng thứ tự như kết quả của truy vấn được cung cấp cho documents.partitionQuery.

Ví dụ: nếu yêu cầu documents.partitionQuery trả về con trỏ phân vùng A và B, thì việc chạy 3 truy vấn sau đây sẽ trả về toàn bộ tập hợp kết quả của truy vấn ban đầu:

  • truy vấn, endAt A
  • truy vấn, startAt A, endAt B
  • truy vấn, startAt B

Kết quả trống có thể chỉ ra rằng truy vấn có quá ít kết quả để được phân vùng, hoặc truy vấn không được hỗ trợ để phân vùng.

nextPageToken

string

Mã thông báo trang có thể được dùng để yêu cầu một nhóm kết quả bổ sung, tối đa là số do partitionCount chỉ định trong yêu cầu documents.partitionQuery. Nếu để trống thì sẽ không có kết quả nào khác.

Phạm vi uỷ quyền

Yêu cầu một trong các phạm vi OAuth sau đây:

  • https://www.googleapis.com/auth/datastore
  • https://www.googleapis.com/auth/cloud-platform

Để biết thêm thông tin, hãy xem bài viết Tổng quan về hoạt động xác thực.