Method: projects.databases.documents.runAggregationQuery

एग्रीगेशन क्वेरी चलाता है.

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

string

ज़रूरी है. पैरंट संसाधन का नाम. फ़ॉर्मैट: projects/{projectId}/databases/{databaseId}/documents या projects/{projectId}/databases/{databaseId}/documents/{document_path}. उदाहरण के लिए: projects/my-project/databases/my-database/documents या projects/my-project/databases/my-database/documents/chatrooms/my-chatroom

अनुरोध का मुख्य भाग

अनुरोध के मुख्य हिस्से में, यहां दिए गए स्ट्रक्चर का डेटा शामिल होता है:

JSON के काेड में दिखाना
{
  "explainOptions": {
    object (ExplainOptions)
  },

  // Union field query_type can be only one of the following:
  "structuredAggregationQuery": {
    object (StructuredAggregationQuery)
  }
  // End of list of possible types for union field query_type.

  // Union field consistency_selector can be only one of the following:
  "transaction": string,
  "newTransaction": {
    object (TransactionOptions)
  },
  "readTime": string
  // End of list of possible types for union field consistency_selector.
}
फ़ील्ड
explainOptions

object (ExplainOptions)

ज़रूरी नहीं. क्वेरी के विकल्पों के बारे में बताएं. अगर यह नीति सेट की जाती है, तो क्वेरी के और भी आंकड़े दिखाए जाएंगे. अगर ऐसा नहीं है, तो सिर्फ़ क्वेरी के नतीजे दिखाए जाएंगे.

यूनियन फ़ील्ड query_type. चलाने के लिए क्वेरी. query_type इनमें से सिर्फ़ एक हो सकता है:
structuredAggregationQuery

object (StructuredAggregationQuery)

कोई एग्रीगेशन क्वेरी.

यूनियन फ़ील्ड consistency_selector. क्वेरी के लिए 'एक जैसा अनुभव' मोड, डिफ़ॉल्ट रूप से 'एक जैसा अनुभव' सुविधा पर सेट होता है. consistency_selector इनमें से सिर्फ़ एक हो सकता है:
transaction

string (bytes format)

पहले से चालू लेन-देन में एग्रीगेशन चलाएं.

यहां दी गई वैल्यू, एक ओपेक ट्रांज़ैक्शन आईडी है, जिसमें क्वेरी को एक्ज़ीक्यूट किया जा सकता है.

base64 कोड में बदली गई स्ट्रिंग.

newTransaction

object (TransactionOptions)

क्वेरी के हिस्से के तौर पर नया ट्रांज़ैक्शन शुरू करता है और डिफ़ॉल्ट रूप से रीड-ओनली पर सेट होता है.

नया लेन-देन आईडी, स्ट्रीम में पहले जवाब के तौर पर दिखाया जाएगा.

readTime

string (Timestamp format)

क्वेरी को दिए गए टाइमस्टैंप पर लागू करता है.

यह पिछले एक घंटे के अंदर का सटीक टाइमस्टैंप होना चाहिए या अगर पॉइंट-इन-टाइम रिकवरी चालू है, तो यह पिछले सात दिनों में पूरे मिनट का टाइमस्टैंप भी हो सकता है.

आरएफ़सी3339 यूटीसी "ज़ुलु" में टाइमस्टैंप फ़ॉर्मैट, नैनोसेकंड रिज़ॉल्यूशन और ज़्यादा से ज़्यादा नौ फ़्रैक्शनल अंकों के साथ हो सकता है. उदाहरण: "2014-10-02T15:01:23Z" और "2014-10-02T15:01:23.045123456Z".

जवाब का लेख

Firestore.RunAggregationQuery का जवाब.

अगर इंडेक्सिंग सही से हाे जाती है, ताे जवाब के लेख में नीचे दिए गए स्ट्रक्चर का डेटा शामिल होता है.

JSON के काेड में दिखाना
{
  "result": {
    object (AggregationResult)
  },
  "transaction": string,
  "readTime": string,
  "explainMetrics": {
    object (ExplainMetrics)
  }
}
फ़ील्ड
result

object (AggregationResult)

एक एग्रीगेशन नतीजा.

आंशिक प्रोग्रेस की रिपोर्ट करते समय यह मौजूद नहीं होता.

transaction

string (bytes format)

इस अनुरोध के तहत शुरू किया गया लेन-देन.

यह जानकारी सिर्फ़ पहले जवाब में तब मौजूद होती है, जब अनुरोध में नया लेन-देन शुरू करने का अनुरोध किया गया हो.

base64 कोड में बदली गई स्ट्रिंग.

readTime

string (Timestamp format)

वह समय जब एग्रीगेट नतीजे को कैलकुलेट किया गया था. ऐसा हमेशा होता रहता है, इस मामले में, इस बात की गारंटी है कि नतीजे की स्ट्रीम में मौजूद पिछले एग्रीगेशन नतीजे में, readTime और इस यूआरएल के बीच कोई बदलाव नहीं हुआ होगा.

अगर क्वेरी से कोई नतीजा नहीं मिलता, तो readTime के साथ रिस्पॉन्स भेजा जाएगा, न कि result भेजा जाएगा. यह उस समय के बारे में बताता है जब क्वेरी चलाई गई थी.

आरएफ़सी3339 यूटीसी "ज़ुलु" में टाइमस्टैंप फ़ॉर्मैट, नैनोसेकंड रिज़ॉल्यूशन और ज़्यादा से ज़्यादा नौ फ़्रैक्शनल अंकों के साथ हो सकता है. उदाहरण: "2014-10-02T15:01:23Z" और "2014-10-02T15:01:23.045123456Z".

explainMetrics

object (ExplainMetrics)

मेट्रिक के बारे में जानकारी देने के लिए क्वेरी. ऐसा सिर्फ़ तब होता है, जब RunAggregationQueryRequest.explain_options दिया गया हो. साथ ही, इसे स्ट्रीम में आखिरी जवाब के साथ सिर्फ़ एक बार भेजा जाता है.

अनुमति के दायरे

इनमें से किसी एक OAuth स्कोप की ज़रूरत होती है:

  • https://www.googleapis.com/auth/datastore
  • https://www.googleapis.com/auth/cloud-platform

ज़्यादा जानकारी के लिए, पुष्टि करने से जुड़ी खास जानकारी देखें.

स्ट्रक्चर्ड एग्रीगेशन क्वेरी

StructuredQuery पर एग्रीगेशन चलाने के लिए Firestore क्वेरी.

JSON के काेड में दिखाना
{
  "aggregations": [
    {
      object (Aggregation)
    }
  ],

  // Union field query_type can be only one of the following:
  "structuredQuery": {
    object (StructuredQuery)
  }
  // End of list of possible types for union field query_type.
}
फ़ील्ड
aggregations[]

object (Aggregation)

ज़रूरी नहीं. structuredQuery के नतीजों पर लागू किए जाने वाले एग्रीगेशन की सीरीज़.

ज़रूरी है:

  • हर क्वेरी में कम से कम एक और ज़्यादा से ज़्यादा पांच एग्रीगेशन.
यूनियन फ़ील्ड query_type. इकट्ठा की जाने वाली बेस क्वेरी. query_type इनमें से सिर्फ़ एक हो सकता है:
structuredQuery

object (StructuredQuery)

नेस्ट की गई स्ट्रक्चर्ड क्वेरी.

एग्रीगेशन

यह ऐसा एग्रीगेशन तय करता है जिससे एक नतीजा मिलता है.

JSON के काेड में दिखाना
{
  "alias": string,

  // Union field operator can be only one of the following:
  "count": {
    object (Count)
  },
  "sum": {
    object (Sum)
  },
  "avg": {
    object (Avg)
  }
  // End of list of possible types for union field operator.
}
फ़ील्ड
alias

string

ज़रूरी नहीं. एग्रीगेशन के नतीजे को सेव करने के लिए फ़ील्ड का वैकल्पिक नाम.

अगर यह नहीं दिया गया है, तो Firestore field_<incremental_id++> फ़ॉर्मैट के हिसाब से डिफ़ॉल्ट नाम चुनेगा. उदाहरण के लिए:

AGGREGATE
  COUNT_UP_TO(1) AS count_up_to_1,
  COUNT_UP_TO(2),
  COUNT_UP_TO(3) AS count_up_to_3,
  COUNT(*)
OVER (
  ...
);

हो जाता है:

AGGREGATE
  COUNT_UP_TO(1) AS count_up_to_1,
  COUNT_UP_TO(2) AS field_1,
  COUNT_UP_TO(3) AS count_up_to_3,
  COUNT(*) AS field_2
OVER (
  ...
);

ज़रूरी है:

  • यह एग्रीगेशन के सभी उपनामों में यूनीक होना चाहिए.
  • document field name की शर्तों का पालन करें.
यूनियन फ़ील्ड operator. परफ़ॉर्म करने के लिए एग्रीगेशन का टाइप, ज़रूरी है. operator इनमें से सिर्फ़ एक हो सकता है:
count

object (Count)

गिनती एग्रीगेटर.

sum

object (Sum)

सम एग्रीगेटर.

avg

object (Avg)

औसत एग्रीगेटर.

गिनती

क्वेरी से मेल खाने वाले दस्तावेज़ों की संख्या.

COUNT(*) एग्रीगेशन फ़ंक्शन पूरे दस्तावेज़ पर काम करता है. इसलिए, इसे फ़ील्ड रेफ़रंस की ज़रूरत नहीं होती.

JSON के काेड में दिखाना
{
  "upTo": string
}
फ़ील्ड
upTo

string (Int64Value format)

ज़रूरी नहीं. गिनती करने के लिए दस्तावेज़ों की ज़्यादा से ज़्यादा संख्या का वैकल्पिक कंस्ट्रेंट.

यह स्कैन करने के लिए दस्तावेज़ों की संख्या की ऊपरी सीमा सेट करने का तरीका उपलब्ध कराता है. साथ ही, इसमें इंतज़ार का समय और कीमत कम होती है.

अनिर्दिष्ट को कोई बाउंड नहीं माना जाता है.

हाई लेवल का उदाहरण:

AGGREGATE COUNT_UP_TO(1000) OVER ( SELECT * FROM k );

ज़रूरी है:

  • मौजूद होने पर शून्य से ज़्यादा होना चाहिए.

योग

अनुरोध किए गए फ़ील्ड की कुल वैल्यू.

  • सिर्फ़ अंकों वाली वैल्यू एग्रीगेट की जाएंगी. NULL के साथ-साथ बिना संख्या वाली सभी वैल्यू को छोड़ दिया गया है.

  • अगर एग्रीगेट की गई वैल्यू में NaN शामिल है, तो NaN वैल्यू दिखाता है. इनफ़िनिटी मैथ का फ़ॉर्मूला, आईईईई-754 के मानकों के हिसाब से है.

  • अगर एग्रीगेट की गई वैल्यू का सेट खाली है, तो यह 0 दिखाता है.

  • अगर सभी एग्रीगेट की गई संख्याएं पूर्णांक हैं और कुल योग का नतीजा ओवरफ़्लो नहीं होता है, तो 64-बिट पूर्णांक लौटाता है. ऐसा न करने पर, नतीजा डबल के तौर पर दिखता है. ध्यान दें कि एग्रीगेट की गई सभी वैल्यू पूर्णांक होने के बावजूद, अगर नतीजा 64-बिट वाले पूर्णांक में फ़िट नहीं हो पाता है, तो नतीजे को डबल के रूप में दिखाया जाता है. ऐसा होने पर, दिखाई गई वैल्यू सटीक नहीं होगी.

  • अंडरफ़्लो होने पर, फ़्लोटिंग-पॉइंट एग्रीगेशन तय नहीं होता. इसका मतलब है कि मौजूदा वैल्यू में बिना कोई बदलाव किए एक ही क्वेरी को बार-बार चलाने से, हर बार अलग नतीजे मिल सकते हैं. ऐसे मामलों में, वैल्यू को फ़्लोटिंग-पॉइंट नंबरों के बजाय, पूर्णांक के तौर पर सेव किया जाना चाहिए.

JSON के काेड में दिखाना
{
  "field": {
    object (FieldReference)
  }
}
फ़ील्ड
field

object (FieldReference)

एग्रीगेट किया जाने वाला फ़ील्ड.

Avg

अनुरोध किए गए फ़ील्ड की वैल्यू का औसत.

  • सिर्फ़ अंकों वाली वैल्यू एग्रीगेट की जाएंगी. NULL के साथ-साथ बिना संख्या वाली सभी वैल्यू को छोड़ दिया गया है.

  • अगर एग्रीगेट की गई वैल्यू में NaN शामिल है, तो NaN वैल्यू दिखाता है. इनफ़िनिटी मैथ का फ़ॉर्मूला, आईईईई-754 के मानकों के हिसाब से है.

  • अगर एग्रीगेट की गई वैल्यू का सेट खाली है, तो यह NULL दिखाता है.

  • नतीजे को हमेशा डबल के तौर पर दिखाता है.

JSON के काेड में दिखाना
{
  "field": {
    object (FieldReference)
  }
}
फ़ील्ड
field

object (FieldReference)

एग्रीगेट किया जाने वाला फ़ील्ड.

एग्रीगेशन का नतीजा

Firestore एग्रीगेशन क्वेरी से मिले एक बकेट का नतीजा.

aggregateFields की कुंजियां, एग्रीगेशन क्वेरी में सभी नतीजों के लिए एक जैसी होती हैं. ये कुंजियां दस्तावेज़ क्वेरी के उलट होती हैं जिनमें हर नतीजे के लिए अलग-अलग फ़ील्ड मौजूद हो सकते हैं.

JSON के काेड में दिखाना
{
  "aggregateFields": {
    string: {
      object (Value)
    },
    ...
  }
}
फ़ील्ड
aggregateFields

map (key: string, value: object (Value))

यह एग्रीगेशन फ़ंक्शन का नतीजा होता है, जैसे कि COUNT(*) AS total_docs.

कुंजी, इनपुट पर एग्रीगेशन फ़ंक्शन को असाइन की गई alias होती है और इस मैप का साइज़, क्वेरी में एग्रीगेशन फ़ंक्शन की संख्या के बराबर होता है.

एक ऑब्जेक्ट, जिसमें "key": value पेयर की सूची है. उदाहरण: { "name": "wrench", "mass": "1.3kg", "count": "3" }.