如何在firebase中将集合复制为子集合?

如何在firebase中将集合复制为子集合?,firebase,google-cloud-firestore,Firebase,Google Cloud Firestore,我有一个users集合和articles集合。每个用户从articles集合中的所有文章开始,我将其存储为用户的子集合,并且我只保留用户未阅读的文章。当用户从文章集合中读取文档时,我会将其从用户的子集合中删除。问题是当一个新用户注册时,我必须获取文章集合中的所有文档并复制到用户的子集合,这是不必要的带宽使用。有没有办法把它最小化?我的数据库模型足够好吗?我比firebase更熟悉firestore,但我可以给你一些想法,直到有更好的人出现 您只需为每个用户保留一个可用于在主列表中查找文章的文章I

我有一个
users
集合和
articles
集合。每个用户从
articles
集合中的所有文章开始,我将其存储为用户的子集合,并且我只保留用户未阅读的文章。当用户从
文章
集合中读取文档时,我会将其从用户的子集合中删除。问题是当一个新用户注册时,我必须获取文章集合中的所有文档并复制到用户的子集合,这是不必要的带宽使用。有没有办法把它最小化?我的数据库模型足够好吗?

我比firebase更熟悉firestore,但我可以给你一些想法,直到有更好的人出现

您只需为每个用户保留一个可用于在主列表中查找文章的文章ID列表,就可以避免复制整个文章。此列表可以是子集合,也可以只是用户文档中的数组

如果你真的关心带宽,你可以在顶级文档中存储所有文章的列表(每次添加或删除文章时都必须更新)。这有点重复,使模型更脆弱(你必须保持两件事同步),但只允许你复制这个小列表

另一种不同的方法是,如果你的文章倾向于按顺序阅读,你可以将未读文章列表与另一个指示最新阅读文章的字段组合在一起——这篇文章之后的任何内容都可以被视为未读,即使不在列表中。新用户只需将此新字段设置为0,即可表示未阅读任何文章。这也意味着您不需要向所有用户添加新文章,因为每个用户在访问您的服务时都会检查任何比此新字段更新的文章

希望这能给你一些想法来尝试和玩