现已推出具有 MongoDB 兼容性的 Firestore 企业版!
了解详情。
اختيار بنية بيانات
تنظيم صفحاتك في مجموعات
يمكنك حفظ المحتوى وتصنيفه حسب إعداداتك المفضّلة.
تذكَّر أنّه عند تنظيم بياناتك في Cloud Firestore، تتوفّر لك بعض الخيارات المختلفة:
- المستندات
- مجموعات متعدّدة
- المجموعات الفرعية داخل المستندات
ضَع في اعتبارك مزايا كل خيار بما يتعلّق بحالة الاستخدام. يقدّم هذا الدليل بعض الأمثلة على بُنى البيانات الهرمية.
البيانات المتداخلة في المستندات
يمكنك تضمين عناصر معقّدة، مثل المصفوفات أو الخرائط، داخل المستندات.
- المزايا: إذا كانت لديك قوائم بيانات بسيطة وثابتة تريد الاحتفاظ بها في مستنداتك، يسهل إعداد ذلك، كما أنّه يبسّط بنية البيانات.
-
القيود:
لا يمكن توسيع نطاق هذا الخيار مثل الخيارات الأخرى،
خاصةً إذا توسّعت بياناتك بمرور الوقت. مع زيادة حجم القوائم أو نموها، يزداد حجم المستند أيضًا، ما قد يؤدي إلى إبطاء عملية استرداد المستند.
- ما هي إحدى حالات الاستخدام المحتملة؟ في تطبيق محادثة، على سبيل المثال، يمكنك تخزين آخر 3 غرف محادثة زارها المستخدم في قائمة متداخلة ضمن ملفه الشخصي.
|
- class alovelace
- name :
first : "Ada"
last : "Lovelace"
born : 1815
rooms :
0 : "Software Chat"
1 : "Famous Figures"
2 : "Famous SWEs"
|
المجموعات الفرعية
يمكنك إنشاء مجموعات داخل المستندات عندما تتوفّر لديك بيانات قد تتوسّع بمرور الوقت.
- المزايا: مع زيادة حجم القوائم، لا يتغيّر حجم المستند الرئيسي. يمكنك أيضًا الاستفادة من إمكانات طلب البحث الكاملة في المجموعات الفرعية،
كما يمكنك إصدار
طلبات بحث في مجموعات المستندات على مستوى المجموعات الفرعية.
-
القيود: لا يمكنك حذف المجموعات الفرعية بسهولة.
- ما هي إحدى حالات الاستخدام المحتملة؟ في تطبيق المحادثة نفسه، يمكنك مثلاً إنشاء مجموعات من المستخدمين أو الرسائل ضمن مستندات غرف المحادثة.
|
- collections_bookmark science
- برنامج class
name : "software chat"
- collections_bookmark
مستخدم
- class
alovelace
first : "Ada"
last : "Lovelace"
- class
sride
first : "Sally"
last : "Ride"`
- class الفيزياء الفلكية
|
المجموعات على مستوى الجذر
أنشِئ مجموعات على مستوى الجذر في قاعدة البيانات لتنظيم مجموعات البيانات المختلفة.
- المزايا: المجموعات على مستوى الجذر مناسبة لعلاقات متعددة إلى متعددة، وتوفّر إمكانية بحث فعّالة داخل كل مجموعة.
-
القيود: قد يصبح الحصول على بيانات هرمية بطبيعتها أكثر تعقيدًا مع زيادة حجم قاعدة البيانات.
- ما هي إحدى حالات الاستخدام المحتملة؟ في تطبيق الدردشة نفسه، يمكنك مثلاً إنشاء مجموعة للمستخدمين وأخرى للغرف والرسائل.
|
- collections_bookmark
مستخدم
- class alovelace
first : "Ada"
last : "Lovelace"
born : 1815
- class sride
first : "Sally"
last : "Ride"
born : 1951
- collections_bookmark غرفة
- class software
- collections_bookmark
الرسائل
- class
message1
from : "alovelace"
content : "..."
- class
message2
from : "sride"
content : "..."
|
إنّ محتوى هذه الصفحة مرخّص بموجب ترخيص Creative Commons Attribution 4.0 ما لم يُنصّ على خلاف ذلك، ونماذج الرموز مرخّصة بموجب ترخيص Apache 2.0. للاطّلاع على التفاصيل، يُرجى مراجعة سياسات موقع Google Developers. إنّ Java هي علامة تجارية مسجَّلة لشركة Oracle و/أو شركائها التابعين.
تاريخ التعديل الأخير: 2025-08-16 (حسب التوقيت العالمي المتفَّق عليه)
[null,null,["تاريخ التعديل الأخير: 2025-08-16 (حسب التوقيت العالمي المتفَّق عليه)"],[],[],null,["\u003cbr /\u003e\n\nRemember, when you structure your data in Cloud Firestore, you\nhave a few different options:\n\n- Documents\n- Multiple collections\n- Subcollections within documents\n\nConsider the advantages of each option as they\nrelate to your use case. A few example structures for hierarchical data\nare outlined in this guide.\n\n\u003cbr /\u003e\n\nNested data in documents\n\nYou can nest complex objects like arrays or maps within documents.\n\n|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------|\n| - **Advantages:** If you have simple, fixed lists of data that you want to keep within your documents, this is easy to set up and streamlines your data structure. - **Limitations:** This isn't as scalable as other options, especially if your data expands over time. With larger or growing lists, the document also grows, which can lead to slower document retrieval times. - **What's a possible use case?** In a chat app, for example, you might store a user's 3 most recently visited chat rooms as a nested list in their profile. | - class alovelace - name : first : \"Ada\" last : \"Lovelace\" born : 1815 rooms : 0 : \"Software Chat\" 1 : \"Famous Figures\" 2 : \"Famous SWEs\" |\n\nSubcollections\n\nYou can create collections within documents when you have data that might expand\nover time.\n\n|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| - **Advantages:** As your lists grow, the size of the parent document doesn't change. You also get full query capabilities on subcollections, and you can issue [collection group queries](../query-data/queries) across subcollections. - **Limitations:** You can't easily delete subcollections. - **What's a possible use case?** In the same chat app, for example, you might create collections of users or messages within chat room documents. | - collections_bookmark science - class software name : \"software chat\" - collections_bookmark users - class alovelace first : \"Ada\" last : \"Lovelace\" - class sride first : \"Sally\" last : \"Ride\"\\` \u003cbr /\u003e \u003cbr /\u003e - class astrophysics - ... |\n\nRoot-level collections\n\nCreate collections at the root level of your database to organize disparate data\nsets.\n\n|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| - **Advantages:** Root-level collections are good for many-to-many relationships and provide powerful querying within each collection. - **Limitations:** Getting data that is naturally hierarchical might become increasingly complex as your database grows. - **What's a possible use case?** In the same chat app, for example, you might create one collection for users and another for rooms and messages. | - collections_bookmark users - class alovelace first : \"Ada\" last : \"Lovelace\" born : 1815 - class sride first : \"Sally\" last : \"Ride\" born : 1951 - collections_bookmark rooms - class software - collections_bookmark messages - class message1 from : \"alovelace\" content : \"...\" - class message2 from : \"sride\" content : \"...\" |"]]