एग्रीगेशन क्वेरी चलाता है.
Firestore.RunQuery
जैसे Document
नतीजे जनरेट करने के बजाय, यह एपीआई AggregationResult
सर्वर-साइड की सीरीज़ बनाने के लिए एग्रीगेशन चलाने की अनुमति देता है.
हाई लेवल का उदाहरण:
-- Return the number of documents in table given a filter.
SELECT COUNT(*) FROM ( SELECT * FROM k where a = true );
एचटीटीपी अनुरोध
POST https://firestore.googleapis.com/v1beta1/{parent=projects/*/databases/*/documents}:runAggregationQuery
यह यूआरएल gRPC ट्रांसकोडिंग सिंटैक्स का इस्तेमाल करता है.
पाथ पैरामीटर
पैरामीटर | |
---|---|
parent |
ज़रूरी है. पैरंट संसाधन का नाम. फ़ॉर्मैट: |
अनुरोध का मुख्य भाग
अनुरोध के मुख्य हिस्से में, यहां दिए गए स्ट्रक्चर का डेटा शामिल होता है:
JSON के काेड में दिखाना |
---|
{ "explainOptions": { object ( |
फ़ील्ड | |
---|---|
explainOptions |
ज़रूरी नहीं. क्वेरी के विकल्पों के बारे में बताएं. अगर यह नीति सेट की जाती है, तो क्वेरी के और भी आंकड़े दिखाए जाएंगे. अगर ऐसा नहीं है, तो सिर्फ़ क्वेरी के नतीजे दिखाए जाएंगे. |
यूनियन फ़ील्ड query_type . चलाने के लिए क्वेरी. query_type इनमें से सिर्फ़ एक हो सकता है: |
|
structuredAggregationQuery |
कोई एग्रीगेशन क्वेरी. |
यूनियन फ़ील्ड consistency_selector . क्वेरी के लिए 'एक जैसा अनुभव' मोड, डिफ़ॉल्ट रूप से 'एक जैसा अनुभव' सुविधा पर सेट होता है. consistency_selector इनमें से सिर्फ़ एक हो सकता है: |
|
transaction |
पहले से चालू लेन-देन में एग्रीगेशन चलाएं. यहां दी गई वैल्यू, एक ओपेक ट्रांज़ैक्शन आईडी है, जिसमें क्वेरी को एक्ज़ीक्यूट किया जा सकता है. base64 कोड में बदली गई स्ट्रिंग. |
newTransaction |
क्वेरी के हिस्से के तौर पर नया ट्रांज़ैक्शन शुरू करता है और डिफ़ॉल्ट रूप से रीड-ओनली पर सेट होता है. नया लेन-देन आईडी, स्ट्रीम में पहले जवाब के तौर पर दिखाया जाएगा. |
readTime |
क्वेरी को दिए गए टाइमस्टैंप पर लागू करता है. यह पिछले एक घंटे के अंदर का सटीक टाइमस्टैंप होना चाहिए या अगर पॉइंट-इन-टाइम रिकवरी चालू है, तो यह पिछले सात दिनों में पूरे मिनट का टाइमस्टैंप भी हो सकता है. आरएफ़सी3339 यूटीसी "ज़ुलु" में टाइमस्टैंप फ़ॉर्मैट, नैनोसेकंड रिज़ॉल्यूशन और ज़्यादा से ज़्यादा नौ फ़्रैक्शनल अंकों के साथ हो सकता है. उदाहरण: |
जवाब का लेख
Firestore.RunAggregationQuery
का जवाब.
अगर इंडेक्सिंग सही से हाे जाती है, ताे जवाब के लेख में नीचे दिए गए स्ट्रक्चर का डेटा शामिल होता है.
JSON के काेड में दिखाना |
---|
{ "result": { object ( |
फ़ील्ड | |
---|---|
result |
एक एग्रीगेशन नतीजा. आंशिक प्रोग्रेस की रिपोर्ट करते समय यह मौजूद नहीं होता. |
transaction |
इस अनुरोध के तहत शुरू किया गया लेन-देन. यह जानकारी सिर्फ़ पहले जवाब में तब मौजूद होती है, जब अनुरोध में नया लेन-देन शुरू करने का अनुरोध किया गया हो. base64 कोड में बदली गई स्ट्रिंग. |
readTime |
वह समय जब एग्रीगेट नतीजे को कैलकुलेट किया गया था. ऐसा हमेशा होता रहता है, इस मामले में, इस बात की गारंटी है कि नतीजे की स्ट्रीम में मौजूद पिछले एग्रीगेशन नतीजे में, अगर क्वेरी से कोई नतीजा नहीं मिलता, तो आरएफ़सी3339 यूटीसी "ज़ुलु" में टाइमस्टैंप फ़ॉर्मैट, नैनोसेकंड रिज़ॉल्यूशन और ज़्यादा से ज़्यादा नौ फ़्रैक्शनल अंकों के साथ हो सकता है. उदाहरण: |
explainMetrics |
मेट्रिक के बारे में जानकारी देने के लिए क्वेरी. ऐसा सिर्फ़ तब होता है, जब |
अनुमति के दायरे
इनमें से किसी एक OAuth स्कोप की ज़रूरत होती है:
https://www.googleapis.com/auth/datastore
https://www.googleapis.com/auth/cloud-platform
ज़्यादा जानकारी के लिए, पुष्टि करने से जुड़ी खास जानकारी देखें.
स्ट्रक्चर्ड एग्रीगेशन क्वेरी
StructuredQuery
पर एग्रीगेशन चलाने के लिए Firestore क्वेरी.
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
वैल्यू दिखाता है. इनफ़िनिटी मैथ का फ़ॉर्मूला, आईईईई-754 के मानकों के हिसाब से है.अगर एग्रीगेट की गई वैल्यू का सेट खाली है, तो यह 0 दिखाता है.
अगर सभी एग्रीगेट की गई संख्याएं पूर्णांक हैं और कुल योग का नतीजा ओवरफ़्लो नहीं होता है, तो 64-बिट पूर्णांक लौटाता है. ऐसा न करने पर, नतीजा डबल के तौर पर दिखता है. ध्यान दें कि एग्रीगेट की गई सभी वैल्यू पूर्णांक होने के बावजूद, अगर नतीजा 64-बिट वाले पूर्णांक में फ़िट नहीं हो पाता है, तो नतीजे को डबल के रूप में दिखाया जाता है. ऐसा होने पर, दिखाई गई वैल्यू सटीक नहीं होगी.
अंडरफ़्लो होने पर, फ़्लोटिंग-पॉइंट एग्रीगेशन तय नहीं होता. इसका मतलब है कि मौजूदा वैल्यू में बिना कोई बदलाव किए एक ही क्वेरी को बार-बार चलाने से, हर बार अलग नतीजे मिल सकते हैं. ऐसे मामलों में, वैल्यू को फ़्लोटिंग-पॉइंट नंबरों के बजाय, पूर्णांक के तौर पर सेव किया जाना चाहिए.
JSON के काेड में दिखाना |
---|
{
"field": {
object ( |
फ़ील्ड | |
---|---|
field |
एग्रीगेट किया जाने वाला फ़ील्ड. |
Avg
अनुरोध किए गए फ़ील्ड की वैल्यू का औसत.
सिर्फ़ अंकों वाली वैल्यू एग्रीगेट की जाएंगी.
NULL
के साथ-साथ बिना संख्या वाली सभी वैल्यू को छोड़ दिया गया है.अगर एग्रीगेट की गई वैल्यू में
NaN
शामिल है, तोNaN
वैल्यू दिखाता है. इनफ़िनिटी मैथ का फ़ॉर्मूला, आईईईई-754 के मानकों के हिसाब से है.अगर एग्रीगेट की गई वैल्यू का सेट खाली है, तो यह
NULL
दिखाता है.नतीजे को हमेशा डबल के तौर पर दिखाता है.
JSON के काेड में दिखाना |
---|
{
"field": {
object ( |
फ़ील्ड | |
---|---|
field |
एग्रीगेट किया जाने वाला फ़ील्ड. |
एग्रीगेशन का नतीजा
Firestore एग्रीगेशन क्वेरी से मिले एक बकेट का नतीजा.
aggregateFields
की कुंजियां, एग्रीगेशन क्वेरी में सभी नतीजों के लिए एक जैसी होती हैं. ये कुंजियां दस्तावेज़ क्वेरी के उलट होती हैं जिनमें हर नतीजे के लिए अलग-अलग फ़ील्ड मौजूद हो सकते हैं.
JSON के काेड में दिखाना |
---|
{
"aggregateFields": {
string: {
object ( |
फ़ील्ड | |
---|---|
aggregateFields |
यह एग्रीगेशन फ़ंक्शन का नतीजा होता है, जैसे कि कुंजी, इनपुट पर एग्रीगेशन फ़ंक्शन को असाइन की गई एक ऑब्जेक्ट, जिसमें |