Ios Firebase查询关系数据

Ios Firebase查询关系数据,ios,swift,firebase,firebase-realtime-database,Ios,Swift,Firebase,Firebase Realtime Database,我使用的是Firebase,有一个关系结构,在多对多关系中有“类别”和“配方”,如下所示: { "categories": { "<category_id_1>": { "name": "Breakfast", "imageUrl": "http://www.image.com/url", "recipes": { "<recipe_id_1>": true, "<recipe_id_2>":

我使用的是Firebase,有一个关系结构,在多对多关系中有“类别”和“配方”,如下所示:

{
 "categories": {
   "<category_id_1>": {
     "name": "Breakfast",
     "imageUrl": "http://www.image.com/url",
     "recipes": {
       "<recipe_id_1>": true,
       "<recipe_id_2>": true
     }
   }
 },
 "recipes": {
   "<recipe_id_1>": {
     "title": "Sweet Potato & White Bean Chilli",
     "cookingTime": 50,
     "portionSize": "4-6",
     "difficulty": "Easy",
     "categories": {
       "<category_id_1>": true,
       "<category_id_2>": true
     }
   }
 }
}
我可以通过转到/categories//recipes并循环获取每个菜谱的引用来获取类别中的菜谱:例如/recipes/

然而,我正在努力解决的是如何查询/过滤早餐类别中难度=容易的食谱


您对查询关系数据有何建议?

与NoSQL中的通常做法一样,您需要根据所需的用例对数据进行建模。因此,如果您想获得简易早餐食谱列表,您应该存储一份简易早餐食谱列表:

{
 "categories_complexities": {
   "Breakfast_easy": {
     "<recipe_id_1>": true,
     "<recipe_id_7>": true
   }
 },
}

请注意,我没有列出您的数据:不要将类别元数据与该类别的食谱列表混合使用。

谢谢Frank,当您有很多过滤器时,这种方法似乎很乏味,因为所有不同的组合都会有很多列表。。早餐容易,早餐难,午餐容易。。。。等等。我想这只会让读取数据更快,重复这样的数据也没关系。你对@JoeBenton做了什么决定