【发布时间】:2022-01-24 01:51:55
【问题描述】:
我正在尝试创建一个以 Firebase 作为我的 NoSQL 后端的约会应用程序。 然而,由于我是 NoSQL 概念的新手,我遇到了几个问题,包括关于文档大小和查询的优化。
users:
user_id
name
age
gender
location
matches: [user1_id, user2_id, ...]
likes_from_other_users: [user1_id, user2_id, ...]
likes_other_users: [user1_id, user2_id, ...]
dislikes_from_other_users: [user1_id, user2_id, ...]
dislikes_other_users: [user1_id, user2_id, ...]
假设一个名为 UserA 的用户有很多来自其他用户的点赞,因此数组 likes_from_other_users 的大小将超过文档的最大大小(1 MB)。此示例可以应用于其他数组。
我应该如何进行?
我正在考虑将这些大型数组提取到新集合中。
在对userA的所有点赞(假设userA有N个其他用户点赞)的情况下,会有n个文档,每个文档都有字段'to' 设置为 userA id 和 'from' 字段设置为每个喜欢 userA 的特定用户。
这将解决庞大的数组大小的问题,但可能会增加查询特定用户的复杂性。
这是正确的方法吗? (我必须另外创建 5 个集合:likes_from_other_users、likes_other_users、dislikes_from_other_users、dislikes_other_users 和匹配项)并且可能会很慢。
此外,matches 集合将包含一对(数组)用户,因此要查询特定用户的匹配项,我需要检查此集合中的所有文档并找到包含我的特定用户的文档m 查询
这是正确的方法吗?
【问题讨论】:
标签: database mongodb firebase flutter nosql