เรียกใช้การค้นหาการรวม
แทนที่จะสร้างผลลัพธ์ด้วย Document
อย่างเช่น Firestore.RunQuery
ได้ API นี้จะช่วยให้เรียกใช้การรวมเพื่อสร้างชุดของฝั่งเซิร์ฟเวอร์ AggregationResult
ได้
ตัวอย่างระดับสูง:
-- Return the number of documents in table given a filter.
SELECT COUNT(*) FROM ( SELECT * FROM k where a = true );
คำขอ HTTP
POST https://firestore.googleapis.com/v1beta1/{parent=projects/*/databases/*/documents}:runAggregationQuery
URL ใช้ไวยากรณ์การแปลง gRPC
พารามิเตอร์เส้นทาง
พารามิเตอร์ | |
---|---|
parent |
ต้องระบุ ชื่อทรัพยากรระดับบนสุด ในรูปแบบ: |
เนื้อความของคำขอ
เนื้อหาของคำขอมีข้อมูลที่มีโครงสร้างต่อไปนี้
การแสดง JSON |
---|
{ "explainOptions": { object ( |
ช่อง | |
---|---|
explainOptions |
ไม่บังคับ อธิบายตัวเลือกต่างๆ สำหรับการค้นหา หากมีการตั้งค่า ระบบจะแสดงผลสถิติคำค้นหาเพิ่มเติม หากไม่ตรง ระบบจะแสดงเฉพาะผลการค้นหา |
ช่องการรวม query_type คำค้นหาที่จะเรียกใช้ query_type ต้องเป็นค่าใดค่าหนึ่งต่อไปนี้ |
|
structuredAggregationQuery |
คำค้นหาการรวม |
ช่องการรวม consistency_selector โหมดความสอดคล้องสำหรับการค้นหา จะมีค่าเริ่มต้นเป็นความสอดคล้องที่อัปเดตทันที consistency_selector ต้องเป็นค่าใดค่าหนึ่งต่อไปนี้ |
|
transaction |
เรียกใช้การรวมภายในธุรกรรมที่ใช้งานอยู่แล้ว ค่าในที่นี้คือรหัสธุรกรรมที่คลุมเครือซึ่งจะใช้ในการค้นหา สตริงที่เข้ารหัสฐาน 64 |
newTransaction |
เริ่มธุรกรรมใหม่เป็นส่วนหนึ่งของการค้นหา โดยตั้งค่าเริ่มต้นเป็นอ่านอย่างเดียว รหัสธุรกรรมใหม่จะแสดงผลเป็นการตอบกลับแรกในสตรีม |
readTime |
ดำเนินการค้นหาในการประทับเวลาที่ระบุ โดยต้องเป็นการประทับเวลาที่มีความแม่นยำระดับไมโครวินาทีในช่วง 1 ชั่วโมงที่ผ่านมา หรือหากมีการเปิดใช้การกู้คืนช่วงเวลา ก็อาจเป็นการประทับเวลาแบบเต็มนาทีภายใน 7 วันที่ผ่านมาได้ การประทับเวลาเป็น RFC3339 UTC "Zulu" โดยมีความละเอียดระดับนาโนวินาทีและมีเลขเศษส่วนสูงสุด 9 หลัก ตัวอย่าง: |
เนื้อหาการตอบกลับ
การตอบกลับสำหรับ Firestore.RunAggregationQuery
หากทำสำเร็จ เนื้อหาการตอบกลับจะมีข้อมูลที่มีโครงสร้างต่อไปนี้
การแสดง JSON |
---|
{ "result": { object ( |
ช่อง | |
---|---|
result |
ผลลัพธ์ซึ่งเป็นการรวมข้อมูลเดียว ไม่แสดงเมื่อรายงานความคืบหน้าบางส่วน |
transaction |
ธุรกรรมที่เริ่มต้นโดยเป็นส่วนหนึ่งของคำขอนี้ แสดงในคำตอบแรกเมื่อคำขอขอให้เริ่มธุรกรรมใหม่เท่านั้น สตริงที่เข้ารหัสฐาน 64 |
readTime |
เวลาที่มีการคำนวณผลลัพธ์รวม ซึ่งเพิ่มขึ้นอย่างต่อเนื่อง ในกรณีนี้ AggregationResult ก่อนหน้าในสตรีมผลลัพธ์ในสตรีมผลลัพธ์จะไม่มีการเปลี่ยนแปลงระหว่าง หากการค้นหาไม่แสดงผลลัพธ์ใดๆ ระบบจะส่งคำตอบที่มี การประทับเวลาเป็น RFC3339 UTC "Zulu" โดยมีความละเอียดระดับนาโนวินาทีและมีเลขเศษส่วนสูงสุด 9 หลัก ตัวอย่าง: |
explainMetrics |
ข้อความค้นหาอธิบายเมตริก ซึ่งจะปรากฏก็ต่อเมื่อระบุ |
ขอบเขตการให้สิทธิ์
ต้องใช้ขอบเขต OAuth รายการใดรายการหนึ่งต่อไปนี้
https://www.googleapis.com/auth/datastore
https://www.googleapis.com/auth/cloud-platform
สำหรับข้อมูลเพิ่มเติม โปรดดูที่ภาพรวมการตรวจสอบสิทธิ์
คำค้นหาการรวมข้อมูลที่มีโครงสร้าง
คำค้นหา Firestore สำหรับการเรียกใช้การรวมผ่าน StructuredQuery
การแสดง JSON |
---|
{ "aggregations": [ { object ( |
ช่อง | |
---|---|
aggregations[] |
ไม่บังคับ ชุดของการรวมที่จะใช้กับผลลัพธ์ของ ข้อกำหนด
|
ช่องการรวม query_type การค้นหาพื้นฐานที่จะรวม query_type ต้องเป็นค่าใดค่าหนึ่งต่อไปนี้ |
|
structuredQuery |
การค้นหาแบบมีโครงสร้างที่ซ้อนกัน |
การรวม
กำหนดการรวมที่สร้างผลลัพธ์เดียว
การแสดง JSON |
---|
{ "alias": string, // Union field |
ช่อง | |
---|---|
alias |
ไม่บังคับ ชื่อของช่องที่ไม่บังคับสำหรับจัดเก็บผลลัพธ์ของการรวม หากไม่มีการกำหนดไว้ Firestore จะเลือกชื่อเริ่มต้นตามรูปแบบ
กลายเป็น:
ข้อกำหนด
|
ช่องการรวม operator ต้องระบุประเภทของการรวมที่จะดำเนินการ operator ต้องเป็นค่าใดค่าหนึ่งต่อไปนี้ |
|
count |
ผู้รวบรวมข้อมูลการนับ |
sum |
ผู้รวบรวมข้อมูลผลรวม |
avg |
ผู้รวบรวมข้อมูลโดยเฉลี่ย |
จำนวน
จำนวนเอกสารที่ตรงกับการค้นหา
ฟังก์ชันการรวม COUNT(*)
จะทำงานกับทั้งเอกสาร ดังนั้นจึงไม่จำเป็นต้องอ้างอิงช่อง
การแสดง JSON |
---|
{ "upTo": string } |
ช่อง | |
---|---|
upTo |
ไม่บังคับ ข้อจำกัดที่ไม่บังคับสำหรับจำนวนเอกสารสูงสุดที่จะนับ วิธีนี้ช่วยในการกำหนดขีดจำกัดสูงสุดของจำนวนเอกสารที่จะสแกน โดยการจำกัดเวลาในการตอบสนองและค่าใช้จ่าย "ไม่ระบุ" จะตีความว่าไม่มีขอบเขต ตัวอย่างระดับสูง:
ข้อกำหนด
|
ผลรวม
ผลรวมของค่าของช่องที่ขอ
ระบบจะรวมเฉพาะค่าที่เป็นตัวเลขเท่านั้น ระบบจะข้ามค่าที่ไม่ใช่ตัวเลขทั้งหมด ซึ่งรวมถึง
NULL
หากค่าที่รวมมี
NaN
จะแสดงผลNaN
คณิตศาสตร์ Infinity เป็นไปตามมาตรฐาน IEEE-754หากชุดค่ารวมว่างเปล่า จะแสดงผลเป็น 0
แสดงผลจำนวนเต็ม 64 บิตหากจำนวนรวมทั้งหมดเป็นจำนวนเต็ม และผลลัพธ์ผลรวมไม่เกินขีดจำกัด มิฉะนั้น ผลลัพธ์จะแสดงค่าเป็นเลขทศนิยม โปรดทราบว่าแม้ว่าค่าที่รวมทั้งหมดจะเป็นจำนวนเต็ม แต่ผลลัพธ์จะแสดงผลเป็นเลขทศนิยมหากจำนวนดังกล่าวไม่สามารถอยู่ภายในจำนวนเต็มแบบมีเครื่องหมาย 64 บิต ในกรณีนี้ ค่าที่ส่งกลับจะสูญเสียความแม่นยํา
เมื่อเกิดการรั่วไหลของจุดลอยตัวขึ้น การรวมจุดลอยตัวนั้นไม่สามารถกำหนดได้ ซึ่งหมายความว่าการเรียกใช้คำค้นหาเดียวกันซ้ำๆ โดยไม่มีการเปลี่ยนแปลงค่าที่สำคัญอาจให้ผลลัพธ์ที่แตกต่างกันเล็กน้อยในแต่ละครั้ง ในกรณีดังกล่าว คุณควรจัดเก็บค่าเป็นจำนวนเต็มของจำนวนทศนิยม
การแสดง JSON |
---|
{
"field": {
object ( |
ช่อง | |
---|---|
field |
ฟิลด์ที่จะรวบรวมข้อมูล |
เฉลี่ย
ค่าเฉลี่ยของค่าในช่องที่ขอ
ระบบจะรวมเฉพาะค่าที่เป็นตัวเลขเท่านั้น ระบบจะข้ามค่าที่ไม่ใช่ตัวเลขทั้งหมด ซึ่งรวมถึง
NULL
หากค่าที่รวมมี
NaN
จะแสดงผลNaN
คณิตศาสตร์ Infinity เป็นไปตามมาตรฐาน IEEE-754หากชุดค่ารวมว่างเปล่า จะแสดงผล
NULL
แสดงผลลัพธ์เป็นเลขทศนิยมซ้ำเสมอ
การแสดง JSON |
---|
{
"field": {
object ( |
ช่อง | |
---|---|
field |
ฟิลด์ที่จะรวบรวมข้อมูล |
ผลลัพธ์การรวม
ผลลัพธ์ของที่เก็บข้อมูลเดียวจากการค้นหาการรวม Firestore
คีย์ของ aggregateFields
เหมือนกันสำหรับผลลัพธ์ทั้งหมดในคำค้นหาการรวม ซึ่งต่างจากคำค้นหาในเอกสารที่สามารถแสดงช่องที่ต่างกันสำหรับผลการค้นหาแต่ละรายการ
การแสดง JSON |
---|
{
"aggregateFields": {
string: {
object ( |
ช่อง | |
---|---|
aggregateFields |
ผลลัพธ์ของฟังก์ชันการรวมข้อมูล เช่น คีย์คือ ออบเจ็กต์ที่มีรายการคู่ |