С точки зрения выполнения запросов от клиента, используя только ту информацию, которую вы указали в вопросе, я не вижу большой практической разницы между получением документа с использованием его известного идентификатора или запросом в поле, котороетакже уникален.В любом случае, на стороне сервера используется индекс, и он стоит ровно 1 прочитанный документ.Документ get () может быть немного быстрее, но не стоит так оптимизировать (по моему мнению).
При принятии решения о моделировании данных, как это, более важно думать о таких вещах, как поведение системы вправила загрузки и безопасности.
Если вы читаете и пишете много документов, чьи идентификаторы имеют последовательное свойство, вы можете столкнуться с точками доступа при этих записях.Так что, если вы хотите использовать свой собственный идентификатор и ожидаете, что будете читать и записывать их в этой последовательности под большой нагрузкой, у вас могут возникнуть проблемы.Если вы не предполагаете, что это будет ситуация, то, вероятно, не имеет большого значения, чей ID вы используете.
Если вы собираетесь использовать правила безопасности для ограничения доступа к документам, и вы используетесодержание других документов, чтобы помочь с этим, вам нужно будет иметь возможность однозначно идентифицировать эти документы в вашем правиле.Вы не можете выполнить запрос к коллекции в правилах, поэтому вам могут потребоваться значимые идентификаторы, которые дадут прямой доступ при использовании правил.Если ваши собственные идентификаторы могут быть легко использованы таким образом в правилах безопасности, это может быть более удобным в целом.Если вы вынуждены использовать сгенерированные идентификаторы Firestore, может быть неудобно, сложно или дорого поддерживать связь между вашими идентификаторами и идентификаторами Firestore.
В любом случае решение, которое вы принимаете,не только о том, какой идентификатор «лучше» в общем смысле, но и о том, какой идентификатор лучше для вашей конкретной, ожидаемой ситуации, под нагрузкой, с учетом безопасности .