Chạy một truy vấn tổng hợp.
Thay vì tạo kết quả Document
như Firestore.RunQuery
, API này cho phép chạy phương thức tổng hợp để tạo ra một loạt AggregationResult
phía máy chủ.
Ví dụ cấp cao:
-- Return the number of documents in table given a filter.
SELECT COUNT(*) FROM ( SELECT * FROM k where a = true );
Yêu cầu HTTP
POST https://firestore.googleapis.com/v1beta1/{parent=projects/*/databases/*/documents}:runAggregationQuery
URL sử dụng cú pháp Chuyển mã gRPC.
Tham số đường dẫn
Tham số | |
---|---|
parent |
Bắt buộc. Tên tài nguyên gốc. Theo định dạng: |
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 |
---|
{ "explainOptions": { object ( |
Trường | |
---|---|
explainOptions |
Không bắt buộc. Giải thích các tuỳ chọn cho truy vấn. Nếu được đặt, thống kê truy vấn bổ sung sẽ được trả về. Nếu không, chỉ có kết quả truy vấn được trả về. |
Trường hợp query_type . Truy vấn cần chạy. query_type chỉ có thể là một trong những trạng thái sau: |
|
structuredAggregationQuery |
Truy vấn tổng hợp. |
Trường hợp consistency_selector . Chế độ nhất quán cho truy vấn sẽ mặc định là nhất quán cao. consistency_selector chỉ có thể là một trong những trạng thái sau: |
|
transaction |
Chạy quá trình tổng hợp trong một giao dịch đã hoạt động. Giá trị ở đây là mã giao dịch không rõ ràng để thực thi truy vấn. Một chuỗi được mã hoá base64. |
newTransaction |
Bắt đầu một giao dịch mới trong truy vấn, được đặt mặc định là chỉ có thể đọc. Mã giao dịch mới sẽ được trả về dưới dạng phản hồi đầu tiên trong luồng. |
readTime |
Thực thi truy vấn tại dấu thời gian 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ụ: |
Nội dung phản hồi
Câu trả lời cho Firestore.RunAggregationQuery
.
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 |
---|
{ "result": { object ( |
Trường | |
---|---|
result |
Một kết quả tổng hợp duy nhất. Không hiển thị khi báo cáo tiến trình một phần. |
transaction |
Giao dịch được bắt đầu theo yêu cầu này. Chỉ xuất hiện trong phản hồi đầu tiên khi người dùng yêu cầu bắt đầu một giao dịch mới. Một chuỗi được mã hoá base64. |
readTime |
Thời gian tính toán kết quả tổng hợp. Giá trị này luôn tăng đơn điệu; trong trường hợp này, AggregatResult trước trong luồng kết quả được đảm bảo là không thay đổi giữa Nếu truy vấn không trả về kết quả nào, thì phản hồi có 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ụ: |
explainMetrics |
Truy vấn giải thích các chỉ số. Mã này chỉ xuất hiện khi |
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.
StructuredAggregationQuery
Truy vấn Firestore để chạy tổng hợp trên StructuredQuery
.
Biểu diễn dưới dạng JSON |
---|
{ "aggregations": [ { object ( |
Trường | |
---|---|
aggregations[] |
Không bắt buộc. Một loạt các phép tổng hợp để áp dụng cho các kết quả của Yêu cầu:
|
Trường hợp query_type . Truy vấn cơ sở để tổng hợp. query_type chỉ có thể là một trong những trạng thái sau: |
|
structuredQuery |
Truy vấn có cấu trúc lồng nhau. |
Tổng hợp
Xác định quá trình tổng hợp tạo ra một kết quả duy nhất.
Biểu diễn dưới dạng JSON |
---|
{ "alias": string, // Union field |
Trường | |
---|---|
alias |
Không bắt buộc. Tên không bắt buộc của trường để lưu trữ kết quả tổng hợp. Nếu không được cung cấp, Firestore sẽ chọn một tên mặc định theo định dạng
sẽ trở thành:
Yêu cầu:
|
Trường hợp operator . Loại tổng hợp cần thực hiện, bắt buộc. operator chỉ có thể là một trong những trạng thái sau: |
|
count |
Tổng hợp dữ liệu. |
sum |
Trang web tổng hợp. |
avg |
Trang web tổng hợp trung bình. |
Số lượt
Số lượng tài liệu phù hợp với truy vấn.
Hàm tổng hợp COUNT(*)
hoạt động trên toàn bộ tài liệu nên không yêu cầu tham chiếu trường.
Biểu diễn dưới dạng JSON |
---|
{ "upTo": string } |
Trường | |
---|---|
upTo |
Không bắt buộc. Giới hạn tùy chọn về số lượng tài liệu tối đa cần đếm. Đây là một cách để đặt giới hạn trên cho số lượng tài liệu cần quét, giúp hạn chế độ trễ và chi phí. Chưa xác định được hiểu là không có ràng buộc. Ví dụ cấp cao:
Yêu cầu:
|
Tổng
Tổng các giá trị của trường được yêu cầu.
Hệ thống chỉ tổng hợp giá trị số. Tất cả các giá trị không phải số, bao gồm cả
NULL
, đều bị bỏ qua.Nếu các giá trị tổng hợp chứa
NaN
, hàm trả vềNaN
. Toán học Infinity tuân theo tiêu chuẩn IEEE-754.Nếu tập hợp giá trị tổng hợp trống, hàm sẽ trả về 0.
Trả về số nguyên 64 bit nếu tất cả các số tổng hợp là số nguyên và kết quả tổng không tràn. Nếu không, kết quả sẽ được trả về dưới dạng kép. Lưu ý rằng ngay cả khi tất cả các giá trị tổng hợp là số nguyên, kết quả vẫn được trả về dưới dạng số nguyên kép nếu không thể nằm vừa trong số nguyên 64 bit đã ký. Khi điều này xảy ra, giá trị trả về sẽ mất độ chính xác.
Khi xảy ra tình trạng thiếu hụt, tổng hợp dấu phẩy động là không xác định. Điều này có nghĩa là việc chạy cùng một truy vấn nhiều lần mà không có bất kỳ thay đổi nào đối với các giá trị cơ bản có thể tạo ra kết quả hơi khác nhau mỗi lần. Trong những trường hợp đó, các giá trị phải được lưu trữ dưới dạng số nguyên thay vì số thực.
Biểu diễn dưới dạng JSON |
---|
{
"field": {
object ( |
Trường | |
---|---|
field |
Trường cần tổng hợp. |
Trung bình
Trung bình của các giá trị trong trường được yêu cầu.
Hệ thống chỉ tổng hợp giá trị số. Tất cả các giá trị không phải số, bao gồm cả
NULL
, đều bị bỏ qua.Nếu các giá trị tổng hợp chứa
NaN
, hàm trả vềNaN
. Toán học Infinity tuân theo tiêu chuẩn IEEE-754.Nếu tập hợp giá trị tổng hợp trống, hàm sẽ trả về
NULL
.Luôn trả về kết quả dưới dạng một đối tượng kép.
Biểu diễn dưới dạng JSON |
---|
{
"field": {
object ( |
Trường | |
---|---|
field |
Trường cần tổng hợp. |
AggregationResult
Kết quả của một nhóm duy nhất trong một truy vấn tổng hợp trên Firestore.
Khoá của aggregateFields
là giống nhau đối với tất cả kết quả trong một truy vấn tổng hợp, không giống như các truy vấn tài liệu có thể có các trường khác nhau cho mỗi kết quả.
Biểu diễn dưới dạng JSON |
---|
{
"aggregateFields": {
string: {
object ( |
Trường | |
---|---|
aggregateFields |
Kết quả của các hàm tổng hợp, ví dụ: Khoá là Đối tượng chứa danh sách các cặp |