Чтение одного документа считается за одно чтение, независимо от размера документа.На самом деле в документе нет такого понятия, как JSON, firebase сгладит вашу структуру в фоновом режиме, для вас это просто выглядит как JSON.Изображение вашего документа имеет ключ person
.
Теперь объект персонажа может выглядеть следующим образом
{
name: "Phil",
age: 25
}
Firestore будет сохранять все поля индивидуально, поэтому технически ваш документ теперь имеет поля person.name
и person.age
вместо просто поля person
.Для вас это означает, что даже если у вас есть сложные объекты внутри одного документа, это все равно только один документ и, следовательно, считается одним чтением.
Загрузка вложенных коллекций будет считаться отдельным чтением.Но представьте, что вместо маленького объекта, как в моем примере person
, у вас есть объекты размером в несколько килобайт или даже мегабайт.Мало того, что вы будете получать огромную полезную нагрузку каждый раз, когда запрашиваете документ, где вам, вероятно, понадобятся только несколько атрибутов, ваш счет будет также увеличиваться из-за выхода из сети, так что одно дополнительное чтение будет стоить.
Вопрос о том, использовать вложенные коллекции или нет, сводится к тому, насколько большим может стать ваш документ.Но решать вам.
Редактировать: Для случая использования, который вы описали в своем комментарии, было бы неплохо сохранить комментарии как в самом документе, так и в самом документе.как в подколлекции.Например, ваш документ может содержать 5 верхних комментариев напрямую, так что выход вашей сети остается низким, но у вас все еще есть доступ к самым важным комментариям мгновенно.Затем, если вы хотите загрузить больше комментариев, вы можете запросить подколлекцию для полной коллекции комментариев.В базах данных NoSQL избыточные данные разрешены и иногда действительно хороши.
Также я рекомендую видео Firebase на эту тему: https://www.youtube.com/watch?v=o7d5Zeic63s