Специально для Firestore, почему бы структурировать свои корневые коллекции как документы userId, которые содержат подколлекцию userPosts, которая содержит сообщения каждого пользователя.Почему бы просто не хранить записи в корневой коллекции и фильтре запросов по идентификатору пользователя?
Например, многие StackOverflow Q / As относительно структурирования данных предлагают иметь что-то вроде этого:
'users':{
'user1@gmail.com': {
'username': 'user1'
}
},
'posts':{
'user1@gmail.com': {
'userPosts':{
'post1': {
'content': 'post1 content'
},
'post2': {
'content': 'post2 content'
},
}
}
}
, где 'users' и 'posts' - это коллекции, а 'userPosts' - это sub.-collection и запрос:
db.collection('posts').doc('user1@gmail.com').collection('userPosts').get()
В чем заключается преимущество организации коллекций "записей" по userId (в данном случае по электронной почте) и userPosts вместо того, чтобы хранить коллекцию полнойпримечания и запросы путем сопоставления userId с userId сообщения, например так:
'users':{
'user1@gmail.com': {
'username': 'user1'
}
},
'posts':{
'post1': {
'userId': 'user1@gmail.com',
'content': 'post1 content'
},
'post2': {
'userId': 'user1@gmail.com',
'content': 'post2 content'
},
}
, где запрос:
db.collection('posts').where('userId', '==', 'user1@gmail.com')