เรียกใช้การค้นหาการรวม
แทนที่จะสร้างผลลัพธ์ 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 |
เวลาที่มีการคํานวณผลลัพธ์รวม จะมีปริมาณเพิ่มขึ้นอยู่เสมอ ในกรณีนี้ Aggregation Results ก่อนหน้าในสตรีมผลลัพธ์นี้รับประกันว่าจะไม่มีการเปลี่ยนแปลงระหว่าง หากการค้นหาไม่แสดงผลลัพธ์ ระบบจะตอบกลับด้วย การประทับเวลาจะอยู่ในรูปแบบ RFC3339 UTC "Zulu" ที่มีความละเอียดระดับนาโนวินาทีและมีตัวเลขที่เป็นเศษส่วนได้สูงสุด 9 หลัก ตัวอย่าง: |
explainMetrics |
เมตริกอธิบายการค้นหา ซึ่งจะแสดงเมื่อมีการระบุ |
ขอบเขตการให้สิทธิ์
ต้องใช้ขอบเขต OAuth อย่างใดอย่างหนึ่งต่อไปนี้
https://www.googleapis.com/auth/datastore
https://www.googleapis.com/auth/cloud-platform
ดูข้อมูลเพิ่มเติมได้ที่ภาพรวมการตรวจสอบสิทธิ์
StructuredAggregationQuery
การค้นหา 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 math เป็นไปตามมาตรฐาน IEEE-754หากชุดค่ารวมเป็นค่าว่าง ระบบจะแสดงผลเป็น 0
แสดงผลจำนวนเต็ม 64 บิต หากจำนวนที่สรุปรวมทั้งหมดเป็นจำนวนเต็มและผลลัพธ์รวมไม่เกิน มิฉะนั้น ผลลัพธ์จะแสดงเป็นเลขคู่ โปรดทราบว่าแม้ว่าค่ารวมทั้งหมดจะเป็นจำนวนเต็ม แต่ผลลัพธ์จะแสดงค่าเป็นเลขคู่หากไม่สามารถให้พอดีกับจำนวนเต็มแบบมีเครื่องหมาย 64 บิต เมื่อกรณีนี้เกิดขึ้น ค่าที่ส่งกลับจะสูญเสียความแม่นยํา
เมื่อเกิดภาวะน้ำล้นเกินกำหนด การรวมจุดลอยตัวจะไม่กำหนด ซึ่งหมายความว่าการเรียกใช้การค้นหาเดียวกันซ้ำๆ โดยไม่มีการเปลี่ยนแปลงค่าที่สำคัญอาจให้ผลลัพธ์ที่แตกต่างกันเล็กน้อยในแต่ละครั้ง ในกรณีดังกล่าว ควรเก็บค่าไว้เป็นจำนวนเต็มเหนือเลขทศนิยม
การแสดง JSON |
---|
{
"field": {
object ( |
ช่อง | |
---|---|
field |
ฟิลด์ที่จะรวบรวมข้อมูล |
เฉลี่ย
ค่าเฉลี่ยของช่องที่ขอ
ระบบจะรวมเฉพาะค่าที่เป็นตัวเลขเท่านั้น ระบบจะข้ามค่าที่ไม่ใช่ตัวเลขทั้งหมดรวมถึง
NULL
หากค่ารวมมี
NaN
ระบบจะแสดงผลNaN
Infinity math เป็นไปตามมาตรฐาน IEEE-754หากชุดค่ารวมว่างเปล่า ระบบจะแสดงผล
NULL
แสดงผลลัพธ์เป็นเลขคู่เสมอ
การแสดง JSON |
---|
{
"field": {
object ( |
ช่อง | |
---|---|
field |
ฟิลด์ที่จะรวบรวมข้อมูล |
AggregationResult
ผลลัพธ์ของที่เก็บข้อมูลเดียวจากการค้นหาการรวม Firestore
คีย์ของ aggregateFields
จะเหมือนกันสำหรับผลการค้นหาทั้งหมดในการค้นหาการรวม ซึ่งต่างจากการค้นหาเอกสารที่มีช่องที่ต่างกันสำหรับผลการค้นหาแต่ละรายการ
การแสดง JSON |
---|
{
"aggregateFields": {
string: {
object ( |
ช่อง | |
---|---|
aggregateFields |
ผลลัพธ์ของฟังก์ชันการรวม เช่น คีย์คือ ออบเจ็กต์ที่มีรายการคู่ |