Подколлекция Firestore или внешний ключ - PullRequest
0 голосов
/ 29 ноября 2018

Я использую Firestore и не вижу преимущества в использовании подколлекции по сравнению с использованием «внешнего» ключа.Когда я получаю документ, подколлекция не загружается с этим документом.

Какая выгода от использования подколлекции, например

books: {
    1: {
        "name": "Book 1"
     }
}
comments: {
    "bookId": 1,
    "content": "good book"
}

или использования подколлекции

books: {
    name: "Book 1",
    comments: [{...}]
}

Ответы [ 2 ]

0 голосов
/ 29 ноября 2018

Когда я получаю документ, подколлекция не загружается с этим документом.

Это потому, что запросы в Firestore являются поверхностными: они получают только элементы из коллекции, которыезапрос выполняетсяНевозможно получить документы из коллекции верхнего уровня и вложенных коллекций в одном запросе.Firestore не поддерживает запросы к различным коллекциям за один раз.

Какая выгода от использования подколлекции

Преимущество заключается в том, что вы можете создавать неограниченное количестводокументов.В случае хранения данных в документе, имейте в виду, что документы имеют ограничения.Таким образом, существуют некоторые ограничения в отношении объема данных, которые вы можете поместить в документ.Согласно официальной документации, касающейся использования и ограничений :

Максимальный размер документа: 1 МБ (1 048 576 байт)

Как вы можете видеть, вы ограничены 1 МБ данных в одном документе.Когда мы говорим о хранении текста, вы можете хранить довольно много, но если вы решите хранить сложные объекты, будьте осторожны с этим ограничением.

0 голосов
/ 29 ноября 2018

Преимущество использования вложенных коллекций заключается в том, что вы собираете информацию о коллекции в себе, и вы должны использовать этот подход, если вам не нужно извлекать все вложенные коллекции сразу. например: пользователь и его статьи блога: если вы должны быть в состоянии получить статьи всех пользователей, для которых вы используете отношения с внешним ключом , но для комментариев, которые вы используетеподколлекции для лучшей организации вашей базы данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...