现已推出具有 MongoDB 兼容性的 Firestore 企业版!
了解详情。
Выберите структуру данных
Оптимизируйте свои подборки
Сохраняйте и классифицируйте контент в соответствии со своими настройками.
Помните, что при структурировании данных в Cloud Firestore у вас есть несколько различных вариантов:
- Документы
- Несколько коллекций
- Подколлекции внутри документов
Рассмотрите преимущества каждого варианта с точки зрения вашего варианта использования. В этом руководстве представлено несколько примеров структур иерархических данных.
Вложенные данные в документах
В документы можно вкладывать сложные объекты, такие как массивы или карты.
- Преимущества: Если у вас есть простые, фиксированные списки данных, которые вы хотите хранить в своих документах, это легко настроить и оптимизировать структуру данных.
- Ограничения: Этот вариант не так масштабируем, как другие, особенно если ваши данные со временем увеличиваются. При увеличении или росте списков увеличивается и размер документа, что может привести к увеличению времени его извлечения.
- Какой возможный вариант использования? Например, в чат-приложении можно хранить три последние посещённые чат-комнаты пользователя в виде вложенного списка в его профиле.
| - class alovelace
- имя :
первый: "Ада" последний: "Лавлейс" родился: 1815 комнаты: 0 : «Программный чат» 1 : «Знаменитые личности» 2 : "Знаменитые SWE"
|
Подколлекции
Вы можете создавать коллекции внутри документов, если у вас есть данные, которые могут расширяться со временем.
- Преимущества: По мере роста списков размер родительского документа не меняется. Вы также получаете полный набор возможностей для запросов к подколлекциям и можете выполнять групповые запросы к коллекциям, охватывающим подколлекции.
- Ограничения: Подколлекции нельзя легко удалить.
- Какой возможный вариант использования? Например, в том же чат-приложении можно создавать коллекции пользователей или сообщений в документах чата.
| - collections_bookmark наука
- программное обеспечение class
имя: "программный чат"- пользователей collections_bookmark
- class alovelace
первый: "Ада" последний: "Лавлейс"
- class срайд
первый: "Салли" последний : "Ride"`
- class астрофизики
|
Коллекции корневого уровня
Создавайте коллекции на корневом уровне базы данных для организации разрозненных наборов данных.
- Преимущества: Коллекции корневого уровня хороши для отношений «многие ко многим» и обеспечивают эффективные запросы внутри каждой коллекции.
- Ограничения: Получение данных, которые имеют естественную иерархию, может стать все более сложным по мере роста вашей базы данных.
- Какой возможный вариант использования? Например, в одном и том же чат-приложении можно создать одну коллекцию для пользователей, а другую — для чат-комнат и сообщений.
| - пользователей collections_bookmark
- class alovelace
первый: "Ада" последний: "Лавлейс" родился: 1815
- class срайд
первый: "Салли" последний: "Ездить" родился: 1951
- collections_bookmark
- программное обеспечение class
- collections_bookmark сообщений
- class сообщение1
от : "alovelace" содержание : "..."
- class сообщение2
от : "sride" содержание : "..."
|
Если не указано иное, контент на этой странице предоставляется по лицензии Creative Commons "С указанием авторства 4.0", а примеры кода – по лицензии Apache 2.0. Подробнее об этом написано в правилах сайта. Java – это зарегистрированный товарный знак корпорации Oracle и ее аффилированных лиц.
Последнее обновление: 2025-08-15 UTC.
[null,null,["Последнее обновление: 2025-08-15 UTC."],[],[],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 : \"...\" |"]]