Join us in person and online for Firebase Summit on October 18, 2022. Learn how Firebase can help you accelerate app development, release your app with confidence, and scale with ease. Register now

क्लाउड फायरस्टोर डेटा मॉडल

संग्रह की मदद से व्यवस्थित रहें अपनी प्राथमिकताओं के आधार पर, कॉन्टेंट को सेव करें और कैटगरी में बांटें.

Cloud Firestore एक NoSQL, दस्तावेज़-उन्मुख डेटाबेस है। SQL डेटाबेस के विपरीत, कोई टेबल या पंक्तियाँ नहीं हैं। इसके बजाय, आप डेटा को दस्तावेज़ों में संग्रहीत करते हैं, जो संग्रह में व्यवस्थित होते हैं।

प्रत्येक दस्तावेज़ में कुंजी-मूल्य जोड़े का एक सेट होता है। Cloud Firestore छोटे दस्तावेज़ों के बड़े संग्रह को संग्रहीत करने के लिए अनुकूलित है।

सभी दस्तावेजों को संग्रह में संग्रहित किया जाना चाहिए। दस्तावेज़ों में उप -संग्रह और नेस्टेड ऑब्जेक्ट हो सकते हैं, दोनों में आदिम फ़ील्ड जैसे तार या जटिल ऑब्जेक्ट जैसे सूचियाँ शामिल हो सकते हैं।

क्लाउड फायरस्टोर में संग्रह और दस्तावेज निहित रूप से बनाए जाते हैं। बस एक संग्रह के भीतर किसी दस्तावेज़ को डेटा असाइन करें। यदि संग्रह या दस्तावेज़ मौजूद नहीं है, तो Cloud Firestore इसे बनाता है।

दस्तावेज़

क्लाउड फायरस्टोर में, भंडारण की इकाई दस्तावेज़ है। एक दस्तावेज़ एक हल्का रिकॉर्ड होता है जिसमें फ़ील्ड होते हैं, जो मानों को मैप करते हैं। प्रत्येक दस्तावेज़ को एक नाम से पहचाना जाता है।

उपयोगकर्ता alovelace का प्रतिनिधित्व करने वाला दस्तावेज़ इस तरह दिख सकता है:

  • एलोवलेस

    first : "Ada"
    last : "Lovelace"
    born : 1815

किसी दस्तावेज़ में जटिल, नेस्टेड वस्तुओं को मानचित्र कहा जाता है। उदाहरण के लिए, आप ऊपर दिए गए उदाहरण से उपयोगकर्ता के नाम को मानचित्र के साथ संरचित कर सकते हैं, जैसे:

  • एलोवलेस

    name :
    first : "Ada"
    last : "Lovelace"
    born : 1815

आप देख सकते हैं कि दस्तावेज़ बहुत कुछ JSON की तरह दिखते हैं। वास्तव में, वे मूल रूप से हैं। कुछ अंतर हैं (उदाहरण के लिए, दस्तावेज़ अतिरिक्त डेटा प्रकारों का समर्थन करते हैं और आकार में 1 एमबी तक सीमित हैं), लेकिन सामान्य तौर पर, आप दस्तावेज़ों को हल्के JSON रिकॉर्ड के रूप में मान सकते हैं।

संग्रह

दस्तावेज़ संग्रह में रहते हैं, जो दस्तावेज़ों के लिए केवल कंटेनर हैं। उदाहरण के लिए, आपके पास अपने विभिन्न उपयोगकर्ताओं को शामिल करने के लिए एक users संग्रह हो सकता है, प्रत्येक को एक दस्तावेज़ द्वारा दर्शाया जा सकता है:

  • उपयोगकर्ता

    • एलोवलेस

      first : "Ada"
      last : "Lovelace"
      born : 1815

    • अट्यूरिंग

      first : "Alan"
      last : "Turing"
      born : 1912

Cloud Firestore स्कीमा रहित है, इसलिए आपको इस बात की पूर्ण स्वतंत्रता है कि आप प्रत्येक दस्तावेज़ में कौन-से फ़ील्ड डालते हैं और उन फ़ील्ड में आप किस प्रकार का डेटा संग्रहीत करते हैं। एक ही संग्रह के सभी दस्तावेज़ों में अलग-अलग फ़ील्ड हो सकते हैं या उन फ़ील्ड में विभिन्न प्रकार के डेटा संग्रहीत कर सकते हैं। हालांकि, एकाधिक दस्तावेज़ों में समान फ़ील्ड और डेटा प्रकारों का उपयोग करना एक अच्छा विचार है, ताकि आप दस्तावेज़ों को अधिक आसानी से क्वेरी कर सकें।

एक संग्रह में दस्तावेज़ होते हैं और कुछ नहीं। इसमें मूल्यों के साथ सीधे कच्चे फ़ील्ड नहीं हो सकते हैं, और इसमें अन्य संग्रह नहीं हो सकते हैं। (क्लाउड फायरस्टोर में अधिक जटिल डेटा की संरचना कैसे करें, इसकी व्याख्या के लिए पदानुक्रमित डेटा देखें।)

संग्रह के भीतर दस्तावेजों के नाम अद्वितीय हैं। आप अपनी खुद की चाबियां प्रदान कर सकते हैं, जैसे उपयोगकर्ता आईडी, या आप क्लाउड फायरस्टोर को आपके लिए स्वचालित रूप से यादृच्छिक आईडी बनाने दे सकते हैं।

आपको संग्रह "बनाने" या "हटाने" की आवश्यकता नहीं है। संग्रह में पहला दस्तावेज़ बनाने के बाद, संग्रह मौजूद है। यदि आप किसी संग्रह के सभी दस्तावेज़ हटाते हैं, तो वह अब मौजूद नहीं रहेगा।

संदर्भ

Cloud Firestore में प्रत्येक दस्तावेज़ को डेटाबेस के भीतर उसके स्थान द्वारा विशिष्ट रूप से पहचाना जाता है। पिछले उदाहरण ने संग्रह users के भीतर एक दस्तावेज़ alovelace दिखाया। अपने कोड में इस स्थान को संदर्भित करने के लिए, आप इसका एक संदर्भ बना सकते हैं।

Web version 9

import { doc } from "firebase/firestore";

const alovelaceDocumentRef = doc(db, 'users', 'alovelace');

Web version 8

var alovelaceDocumentRef = db.collection('users').doc('alovelace');
तीव्र
नोट: यह उत्पाद watchOS और ऐप क्लिप लक्ष्य पर उपलब्ध नहीं है।
let alovelaceDocumentRef = db.collection("users").document("alovelace")
उद्देश्य सी
नोट: यह उत्पाद watchOS और ऐप क्लिप लक्ष्य पर उपलब्ध नहीं है।
FIRDocumentReference *alovelaceDocumentRef =
    [[self.db collectionWithPath:@"users"] documentWithPath:@"alovelace"];

Java

DocumentReference alovelaceDocumentRef = db.collection("users").document("alovelace");

Kotlin+KTX

val alovelaceDocumentRef = db.collection("users").document("alovelace")

Dart

final alovelaceDocumentRef = db.collection("users").doc("alovelace");
जावा
// Reference to a document with id "alovelace" in the collection "users"
DocumentReference document = db.collection("users").document("alovelace");
अजगर
a_lovelace_ref = db.collection(u'users').document(u'alovelace')

Python

a_lovelace_ref = db.collection("users").document("alovelace")
सी++
DocumentReference alovelace_document_reference =
    db->Collection("users").Document("alovelace");
Node.js
const alovelaceDocumentRef = db.collection('users').doc('alovelace');
जाओ
alovelaceRef := client.Collection("users").Doc("alovelace")
पीएचपी
$document = $db->collection('samples/php/users')->document('alovelace');
एकता
DocumentReference documentRef = db.Collection("users").Document("alovelace");
सी#
DocumentReference documentRef = db.Collection("users").Document("alovelace");
माणिक
document_ref = firestore.col("users").doc("alovelace")

एक संदर्भ एक हल्की वस्तु है जो आपके डेटाबेस में किसी स्थान की ओर इशारा करती है। आप एक संदर्भ बना सकते हैं कि डेटा वहां मौजूद है या नहीं, और एक संदर्भ बनाने से कोई नेटवर्क संचालन नहीं होता है।

आप संग्रह के संदर्भ भी बना सकते हैं:

Web version 9

import { collection } from "firebase/firestore";

const usersCollectionRef = collection(db, 'users');

Web version 8

var usersCollectionRef = db.collection('users');
तीव्र
नोट: यह उत्पाद watchOS और ऐप क्लिप लक्ष्य पर उपलब्ध नहीं है।
let usersCollectionRef = db.collection("users")
उद्देश्य सी
नोट: यह उत्पाद watchOS और ऐप क्लिप लक्ष्य पर उपलब्ध नहीं है।
FIRCollectionReference *usersCollectionRef = [self.db collectionWithPath:@"users"];

Java

CollectionReference usersCollectionRef = db.collection("users");

Kotlin+KTX

val usersCollectionRef = db.collection("users")

Dart

final usersCollectionRef = db.collection("users");
जावा
// Reference to the collection "users"
CollectionReference collection = db.collection("users");
अजगर
users_ref = db.collection(u'users')

Python

users_ref = db.collection("users")
सी++
CollectionReference users_collection_reference = db->Collection("users");
Node.js
const usersCollectionRef = db.collection('users');
जाओ
usersRef := client.Collection("users")
पीएचपी
$collection = $db->collection('samples/php/users');
एकता
CollectionReference collectionRef = db.Collection("users");
सी#
CollectionReference collectionRef = db.Collection("users");
माणिक
collection_ref = firestore.col "users"

सुविधा के लिए, आप किसी दस्तावेज़ या संग्रह के पथ को स्ट्रिंग के रूप में निर्दिष्ट करके संदर्भ भी बना सकते हैं, पथ घटकों को फ़ॉरवर्ड स्लैश ( / ) द्वारा अलग किया जाता है। उदाहरण के लिए, alovelace दस्तावेज़ का संदर्भ बनाने के लिए:

Web version 9

import { doc } from "firebase/firestore"; 

const alovelaceDocumentRef = doc(db, 'users/alovelace');

Web version 8

var alovelaceDocumentRef = db.doc('users/alovelace');
तीव्र
नोट: यह उत्पाद watchOS और ऐप क्लिप लक्ष्य पर उपलब्ध नहीं है।
let aLovelaceDocumentReference = db.document("users/alovelace")
उद्देश्य सी
नोट: यह उत्पाद watchOS और ऐप क्लिप लक्ष्य पर उपलब्ध नहीं है।
FIRDocumentReference *aLovelaceDocumentReference =
    [self.db documentWithPath:@"users/alovelace"];

Java

DocumentReference alovelaceDocumentRef = db.document("users/alovelace");

Kotlin+KTX

val alovelaceDocumentRef = db.document("users/alovelace")

Dart

final aLovelaceDocRef = db.doc("users/alovelace");
जावा
// Reference to a document with id "alovelace" in the collection "users"
DocumentReference document = db.document("users/alovelace");
अजगर
a_lovelace_ref = db.document(u'users/alovelace')

Python

a_lovelace_ref = db.document("users/alovelace")
सी++
DocumentReference alovelace_document = db->Document("users/alovelace");
Node.js
const alovelaceDocumentRef = db.doc('users/alovelace');
जाओ
alovelaceRef := client.Doc("users/alovelace")
पीएचपी
$document = $db->document('users/alovelace');
एकता
DocumentReference documentRef = db.Document("users/alovelace");
सी#
DocumentReference documentRef = db.Document("users/alovelace");
माणिक
document_path_ref = firestore.doc "users/alovelace"

पदानुक्रमित डेटा

यह समझने के लिए कि क्लाउड फायरस्टोर में पदानुक्रमित डेटा संरचनाएं कैसे काम करती हैं, संदेशों और चैट रूम के साथ एक उदाहरण चैट ऐप पर विचार करें।

आप अलग-अलग चैट रूम को स्टोर करने के लिए rooms नामक संग्रह बना सकते हैं:

  • रूम

    • कक्षए

      name : "my chat room"

    • बी

      ...

अब जब आपके पास चैट रूम हैं, तो तय करें कि अपने संदेशों को कैसे स्टोर किया जाए। हो सकता है कि आप उन्हें चैट रूम के दस्तावेज़ में संग्रहीत नहीं करना चाहें। Cloud Firestore में दस्तावेज़ हल्के होने चाहिए, और चैट रूम में बड़ी संख्या में संदेश हो सकते हैं। हालांकि, आप अपने चैट रूम के दस्तावेज़ में उपसंग्रह के रूप में अतिरिक्त संग्रह बना सकते हैं।

उपसंग्रह

इस परिदृश्य में संदेशों को संग्रहीत करने का सबसे अच्छा तरीका उपसंग्रहों का उपयोग करना है। एक उपसंग्रह एक विशिष्ट दस्तावेज़ से जुड़ा एक संग्रह है।

आप अपने rooms के संग्रह में प्रत्येक कक्ष दस्तावेज़ के लिए messages नामक एक उपसंग्रह बना सकते हैं:

  • रूम

    • कक्षए

      name : "my chat room"

      • संदेश

        • संदेश1

          from : "alex"
          msg : "Hello World!"

        • संदेश2

          ...

    • बी

      ...

इस उदाहरण में, आप निम्न कोड के साथ उपसंग्रह में एक संदेश का संदर्भ बनाएंगे:

Web version 9

import { doc } from "firebase/firestore"; 

const messageRef = doc(db, "rooms", "roomA", "messages", "message1");

Web version 8

var messageRef = db.collection('rooms').doc('roomA')
                .collection('messages').doc('message1');
तीव्र
नोट: यह उत्पाद watchOS और ऐप क्लिप लक्ष्य पर उपलब्ध नहीं है।
let messageRef = db
    .collection("rooms").document("roomA")
    .collection("messages").document("message1")
उद्देश्य सी
नोट: यह उत्पाद watchOS और ऐप क्लिप लक्ष्य पर उपलब्ध नहीं है।
FIRDocumentReference *messageRef =
    [[[[self.db collectionWithPath:@"rooms"] documentWithPath:@"roomA"]
    collectionWithPath:@"messages"] documentWithPath:@"message1"];

Java

DocumentReference messageRef = db
        .collection("rooms").document("roomA")
        .collection("messages").document("message1");

Kotlin+KTX

val messageRef = db
        .collection("rooms").document("roomA")
        .collection("messages").document("message1")

Dart

final messageRef = db
    .collection("rooms")
    .doc("roomA")
    .collection("messages")
    .doc("message1");
जावा
// Reference to a document in subcollection "messages"
DocumentReference document =
    db.collection("rooms").document("roomA").collection("messages").document("message1");
अजगर
room_a_ref = db.collection(u'rooms').document(u'roomA')
message_ref = room_a_ref.collection(u'messages').document(u'message1')

Python

room_a_ref = db.collection("rooms").document("roomA")
message_ref = room_a_ref.collection("messages").document("message1")
सी++
DocumentReference message_reference = db->Collection("rooms")
    .Document("roomA")
    .Collection("messages")
    .Document("message1");
Node.js
const messageRef = db.collection('rooms').doc('roomA')
  .collection('messages').doc('message1');
जाओ
messageRef := client.Collection("rooms").Doc("roomA").
	Collection("messages").Doc("message1")
पीएचपी
$document = $db
    ->collection('rooms')
    ->document('roomA')
    ->collection('messages')
    ->document('message1');
एकता
DocumentReference documentRef = db
	.Collection("Rooms").Document("RoomA")
	.Collection("Messages").Document("Message1");
सी#
DocumentReference documentRef = db
    .Collection("Rooms").Document("RoomA")
    .Collection("Messages").Document("Message1");
माणिक
message_ref = firestore.col("rooms").doc("roomA").col("messages").doc("message1")

संग्रह और दस्तावेजों के वैकल्पिक पैटर्न पर ध्यान दें। आपके संग्रह और दस्तावेज़ों को हमेशा इस पैटर्न का पालन करना चाहिए। आप संग्रह में संग्रह या दस्तावेज़ में दस्तावेज़ का संदर्भ नहीं दे सकते हैं।

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

उप-संग्रह में दस्तावेज़ों में उप-संग्रह भी हो सकते हैं, जिससे आप डेटा को और अधिक नेस्ट कर सकते हैं। आप डेटा को 100 स्तर तक नेस्ट कर सकते हैं।