क्लाउड फायरस्टोर इंडेक्स परिभाषा संदर्भ

क्लाउड फायरस्टोर स्वचालित रूप से सबसे सामान्य प्रकार की क्वेरी का समर्थन करने के लिए इंडेक्स बनाता है, लेकिन आपको क्लाउड फायरस्टोर गाइड में वर्णित कस्टम इंडेक्स और इंडेक्स ओवरराइड को परिभाषित करने की अनुमति देता है।

आप फायरबेस कंसोल में या सीएलआई का उपयोग करके कस्टम इंडेक्स बना, संशोधित और तैनात कर सकते हैं। सीएलआई से, अपनी इंडेक्स कॉन्फ़िगरेशन फ़ाइल को डिफ़ॉल्ट फ़ाइल नाम firestore.indexes.json के साथ संपादित करें, और firebase deploy कमांड का उपयोग करके तैनात करें।

आप firebase firestore:indexes उपयोग करके सीएलआई के साथ इंडेक्स निर्यात कर सकते हैं।

एक इंडेक्स कॉन्फ़िगरेशन फ़ाइल एक ऑब्जेक्ट को परिभाषित करती है जिसमें एक indexes सरणी और एक वैकल्पिक fieldOverrides सरणी होती है। यहाँ एक उदाहरण है:

{
  // Required, specify compound indexes
  indexes: [
    {
      collectionGroup: "posts",
      queryScope: "COLLECTION",
      fields: [
        { fieldPath: "author", arrayConfig: "CONTAINS" },
        { fieldPath: "timestamp", order: "DESCENDING" }
      ]
    }
  ],

  // Optional, disable indexes or enable single-field collection group indexes
  fieldOverrides: [
    {
      collectionGroup: "posts",
      fieldPath: "myBigMapField",
      // We want to disable indexing on our big map field, and so empty the indexes array
      indexes: []
    }
  ]
}

एक सूचकांक विन्यास तैनात करें

firebase deploy कमांड के साथ अपने इंडेक्स कॉन्फ़िगरेशन को तैनात करें। यदि आप केवल अपने प्रोजेक्ट में कॉन्फ़िगर किए गए डेटाबेस के लिए इंडेक्स तैनात करना चाहते हैं, तो --only firestore ध्वज जोड़ें। इस आदेश के लिए विकल्प संदर्भ देखें।

तैनात इंडेक्स को सूचीबद्ध करने के लिए, firebase firestore:indexes कमांड चलाएँ। अपने प्रोजेक्ट के डिफ़ॉल्ट डेटाबेस के अलावा किसी अन्य डेटाबेस के इंडेक्स को सूचीबद्ध करने के लिए --database=<databaseID> ध्वज जोड़ें।

यदि आप फायरबेस कंसोल का उपयोग करके इंडेक्स में संपादन करते हैं, तो सुनिश्चित करें कि आप अपनी स्थानीय इंडेक्स फ़ाइल को भी अपडेट करते हैं। इंडेक्स को प्रबंधित करने के बारे में अधिक जानकारी के लिए, क्लाउड फायरस्टोर गाइड देखें।

JSON प्रारूप

इंडेक्स

indexes सरणी में एक ऑब्जेक्ट के लिए स्कीमा इस प्रकार है। वैकल्पिक गुणों की पहचान ? से की जाती है ? चरित्र।

ध्यान दें कि क्लाउड फायरस्टोर दस्तावेज़ फ़ील्ड को केवल एक मोड में अनुक्रमित किया जा सकता है, इस प्रकार फ़ील्ड ऑब्जेक्ट में order और arrayConfig गुण दोनों शामिल नहीं हो सकते हैं।

  collectionGroup: string  // Labeled "Collection ID" in the Firebase console
  queryScope: string       // One of "COLLECTION", "COLLECTION_GROUP"
  fields: array
    fieldPath: string
    order?: string         // One of "ASCENDING", "DESCENDING"; excludes arrayConfig property
    arrayConfig?: string   // If this parameter used, must be "CONTAINS"; excludes order property

फ़ील्डओवरराइड्स

fieldOverrides सरणी में एक ऑब्जेक्ट के लिए स्कीमा इस प्रकार है। वैकल्पिक गुणों की पहचान ? से की जाती है ? चरित्र।

ध्यान दें कि क्लाउड फायरस्टोर दस्तावेज़ फ़ील्ड को केवल एक मोड में अनुक्रमित किया जा सकता है, इस प्रकार फ़ील्ड ऑब्जेक्ट में order और arrayConfig गुण दोनों शामिल नहीं हो सकते हैं।

  collectionGroup: string  // Labeled "Collection ID" in the Firebase console
  fieldPath: string
  ttl?: boolean            // Set specified field to have TTL policy and be eligible for deletion
  indexes: array           // Use an empty array to disable indexes on this collectionGroup + fieldPath
    queryScope: string     // One of "COLLECTION", "COLLECTION_GROUP"
    order?: string         // One of "ASCENDING", "DESCENDING"; excludes arrayConfig property
    arrayConfig?: string   // If this parameter used, must be "CONTAINS"; excludes order property

टीटीएल नीति

TTL नीति को fieldOverrides सरणी का उपयोग करके निम्नानुसार सक्षम या अक्षम किया जा सकता है:

  // Optional, disable index single-field collection group indexes
  fieldOverrides: [
    {
      collectionGroup: "posts",
      fieldPath: "ttlField",
      ttl: "true",  // Explicitly enable TTL on this Field.
      // Disable indexing so empty the indexes array
      indexes: []
    }
  ]

फ़ील्ड में डिफ़ॉल्ट अनुक्रमणिका बनाए रखने और TTL नीति सक्षम करने के लिए:

{
  "fieldOverrides": [
    {
      "collectionGroup": "yourCollectionGroup",
      "fieldPath": "yourFieldPath",
      "ttl": true,
      "indexes": [
        { "order": "ASCENDING", "queryScope": "COLLECTION_GROUP" },
        { "order": "DESCENDING", "queryScope": "COLLECTION_GROUP" },
        { "arrayConfig": "CONTAINS", "queryScope": "COLLECTION_GROUP" }
      ]
    }
  ]
}

टाइम-टू-लिव (टीटीएल) नीतियों के बारे में अधिक जानकारी के लिए आधिकारिक दस्तावेज़ की समीक्षा करें।