最好将每种类型的餐食类型存储在文档下还是使用地图或数组。
如果一顿饭可以用单一类型标记,那么你可以像这样存储类型:
Firestore-root
|
--- meals (collection)
|
--- $mealId (document)
|
--- type: "soup"
如果一顿饭可以使用多种类型进行标记,那么您可以使用数组:
Firestore-root
|
--- meals (collection)
|
--- $mealId (document)
|
--- type: ["soup", "salad"]
或者地图:
Firestore-root
|
--- meals (collection)
|
--- $mealId (document)
|
--- type
|
--- soup: true
|
--- salad: true
使用地图时,可以轻松创建多个whereEqualTo() 函数调用。因此,您必须选择上述解决方案中的哪一种最适合您应用的用例。
稍后当他们选择用餐类型时,我有一个统计数据集,在其中我想存储他们在一周和一个月内吃了多少顿汤等的统计数据。
为此,我建议您使用这样的架构:
Firestore-root
|
--- statistics (collection)
|
--- $uid (document)
|
--- soup: 2
|
--- salad: 7
通过这种方式,您可以为每个用户保留一个计数器,记录您提供了多少餐食。如果您需要更复杂的模式,可以将这些餐点作为文档存储在集合中,并将每餐添加为包含时间戳的文档。这样,您就可以查询 Timestamp 范围。