لتنفيذ طلب بحث عن تجميع.
بدلاً من عرض نتائج Document
مثل Firestore.RunQuery
، تسمح واجهة برمجة التطبيقات هذه بتشغيل عملية تجميع لإنتاج سلسلة من ملفات 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/v1/{parent=projects/*/databases/*/documents}:runAggregationQuery
يستخدِم عنوان URL بنية تحويل ترميز gRPC.
مَعلمات المسار
المَعلمات | |
---|---|
parent |
مطلوب. اسم المورد الرئيسي. بالتنسيق: |
نص الطلب
يحتوي نص الطلب على بيانات بالبنية التالية:
تمثيل JSON |
---|
{ "explainOptions": { object ( |
الحقول | |
---|---|
explainOptions |
هذه السمة اختيارية. شرح خيارات الاستعلام. وفي حال ضبطها، سيتم عرض إحصاءات إضافية لطلبات البحث. وإذا لم يكن الأمر كذلك، فسيتم عرض نتائج الاستعلام فقط. |
حقل الاتحاد query_type . الاستعلام المطلوب تنفيذه. يمكن أن يكون query_type واحدًا فقط مما يلي: |
|
structuredAggregationQuery |
طلب تجميع. |
حقل الاتحاد consistency_selector . يتم ضبط وضع الاتساق لطلب البحث تلقائيًا على الاتساق القوي. يمكن أن يكون consistency_selector واحدًا فقط مما يلي: |
|
transaction |
تنفيذ التجميع ضمن معاملة نشطة بالفعل. القيمة هنا هي معرّف المعاملة مبهم لتنفيذ الاستعلام فيه. سلسلة بترميز base64. |
newTransaction |
بدء معاملة جديدة كجزء من طلب البحث، مع ضبط الإعداد التلقائي على القراءة فقط. سيتم عرض معرِّف المعاملة الجديد كأول ردّ في مصدر البيانات. |
readTime |
لتنفيذ طلب البحث عند الطابع الزمني المحدّد. ويجب أن يكون هذا الطابع الزمني للدقة بالميكرو ثانية خلال الساعة الماضية، أو إذا كانت ميزة "الاسترداد في نقطة زمنية" مفعَّلة، يمكن أن يكون أيضًا طابعًا زمنيًا لدقيقة كاملة خلال آخر 7 أيام. طابع زمني بتنسيق RFC3339 حسب التوقيت العالمي المنسَّق (UTC) "زولو" بدقة نانوثانية وما يصل إلى تسعة أرقام كسرية. أمثلة: |
نص الاستجابة
تمثّل هذه السمة الردّ على Firestore.RunAggregationQuery
.
إذا كانت الاستجابة ناجحة، سيحتوي نص الاستجابة على بيانات بالبنية التالية:
تمثيل JSON |
---|
{ "result": { object ( |
الحقول | |
---|---|
result |
نتيجة تجميع واحدة. لا تتوفّر هذه الميزة عند الإبلاغ عن التقدّم الجزئي. |
transaction |
المعاملة التي بدأت كجزء من هذا الطلب. لا تظهر إلا في الاستجابة الأولى عندما يطلب الطلب بدء معاملة جديدة. سلسلة بترميز base64. |
readTime |
وقت حساب النتيجة المجمّعة. وهذا يتزايد دائمًا بصورة رتيبة؛ في هذه الحالة، نضمن عدم تغيير نتيجة التجميع السابقة في ساحة مشاركات النتائج بين إذا لم يعرض طلب البحث أي نتائج، سيتم إرسال ردّ بـ طابع زمني بتنسيق RFC3339 حسب التوقيت العالمي المنسَّق (UTC) "زولو" بدقة نانوثانية وما يصل إلى تسعة أرقام كسرية. أمثلة: |
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
. تتبع الرياضيات اللانهائية معايير IEEE-754.إذا كانت مجموعة القيم المجمّعة فارغة، يتم عرض 0.
لعرض عدد صحيح 64 بت إذا كانت جميع الأرقام المجمّعة أعداد صحيحة ولم تتجاوز نتيجة المجموع. بخلاف ذلك، يتم عرض النتيجة على هيئة مضاعفة. تجدر الإشارة إلى أنّه حتى إذا كانت جميع القيم المجمّعة أعداد صحيحة، يتم عرض النتيجة كقيمة مزدوجة إذا لم تكن متوافقة مع عدد صحيح بعلامة 64 بت. وعند حدوث ذلك، ستفقد القيمة المعروضة الدقة.
عند حدوث تدفّق منخفض، يكون تجميع النقاط العائمة غير محدَّد. هذا يعني أن تشغيل نفس الاستعلام بشكل متكرر بدون أي تغييرات على القيم الأساسية يمكن أن يؤدي إلى نتائج مختلفة قليلاً في كل مرة. في هذه الحالات، يجب تخزين القيم كأعداد صحيحة بدلاً من أرقام النقطة العائمة.
تمثيل JSON |
---|
{
"field": {
object ( |
الحقول | |
---|---|
field |
الحقل المطلوب تجميعه. |
Avg
متوسط قيم الحقل المطلوب.
سيتم تجميع القيم الرقمية فقط. يتم تخطّي جميع القيم غير الرقمية بما في ذلك
NULL
.وإذا كانت القيم المجمّعة تحتوي على
NaN
، يتم عرضNaN
. تتبع الرياضيات اللانهائية معايير IEEE-754.إذا كانت مجموعة القيم المجمّعة فارغة، يتم عرض
NULL
.يتم دائمًا عرض النتيجة على شكل مزدوج.
تمثيل JSON |
---|
{
"field": {
object ( |
الحقول | |
---|---|
field |
الحقل المطلوب تجميعه. |
نتيجة التجميع
نتيجة حزمة واحدة من طلب تجميع Firestore.
مفاتيح aggregateFields
هي نفسها لجميع النتائج في طلب البحث عن التجميع، على عكس طلبات البحث في المستندات التي يمكن أن تحتوي على حقول مختلفة لكل نتيجة.
تمثيل JSON |
---|
{
"aggregateFields": {
string: {
object ( |
الحقول | |
---|---|
aggregateFields |
نتيجة دوال التجميع، مثل: المفتاح هو عنصر يحتوي على قائمة بأزواج |