我需要最好的帮助方法来构建收集和文档的结构。 我想实现的目标是在传统的sql查询中很简单。
我收集了卡片,每张卡片都有一个ID。 我收集了一些赚取卡并存储卡ID的用户。 我要过滤用户卡。 传统sql
SELECT cards.cardID, cards.CardName, cards.CardDescription, myCards.uid
FROM cards
INNER JOIN myCards ON cards.cardID = myCards.cardID
WHERE (((myCards.uid)=1));
我知道不是那样做的。
答案 0 :(得分:1)
Cloud Firestore中没有服务器端联接的概念(许多其他NoSQL数据库中也没有)。
如果您需要两个集合中的数据,则需要(至少)两次读取操作。
或者,您可以将myCards
中的数据复制到cards
集合中的相关文档中。在这种情况下,您存储了重复的数据,但是需要较少的读取操作。您需要权衡读取操作的可伸缩性,而要进行更复杂(且可伸缩性较小)的写入操作。
您首选哪种方法很大程度上取决于您对NoSQL数据库的经验水平。两者都不总是比对方更好。为了使这些注意事项更加舒适,我建议您阅读NoSQL data modeling,观看Firebase for SQL developers和Get to know Cloud Firestore。