我正在构建一个应用程序,其中包含来自DB中不同子项的多个指针 .
目前db看起来像这样:

users
  ㄴ EAGZwcgvgAcgErO7rfm7IHI91fk2
       ㄴ jobA: 
           ㄴ info1: "F"
           ㄴ info2: 24
        ㄴ jobB: 
          ㄴ info1: "F"
          ㄴ info2: 24   
  ㄴ alE4qM1vg2c9OrW5lVo7IvQk02Hv
        ㄴ jobA: 
            ㄴ info1: "F"
            ㄴ info2: 24
        ㄴ jobB: 
           ㄴ info1: "F"
           ㄴ info2: 24  

SanfranJobs
  ㄴ QWERAgvgAcgErO7rfm7IHI91fk2
       ㄴ user: "EAGZwcgvgAcgErO7rfm7IHI91fk2"
       ㄴ info3: 24
  ㄴ 3FAS21vg2c9OrW5lVo7IvQk02Hv
       ㄴ user: "alE4qM1vg2c9OrW5lVo7IvQk02Hv"
       ㄴ info3: 21

ManhatJobs
  ㄴ EAGZwcgG4ScgErO7rfm7IHI91fk2
       ㄴ user: "EAGZwcgvgAcgErO7rfm7IHI91fk2"
       ㄴ info3: 24
  ㄴ alE4qM1vg2c23RFV5lVo7IvQk02Hv
       ㄴ user: "alE4qM1vg2c9OrW5lVo7IvQk02Hv"
       ㄴ info3: 21

即,用户可以保存多个作业,但我还希望按位置检索作业,而不仅仅是发布它们的用户 .

这三个问题是
1)在不同的孩子之间保持这种联系是一种好习惯吗?如果没有,你能就不同的方法提出建议吗?

2)例如,如果有人要查询用户F已发布的所有作业,
目前,唯一的方法是在本地下载所有的uid,测试哪个uid名为F(假设名称是唯一的)
然后在所有城市中下载所有作业,并测试哪个作业将该uid作为属性 . 即使对于小型数据集,这听起来也非常低效 .

3)我也担心"SanfranJobs"和"ManhatJobs"的粒度
如果理论上应用程序在每个城市都有数千个工作,我不希望每次有人加载 Map 以查看附近的工作,数据库必须获取他所在城市的所有工作并迭代它们 .
这个问题可以以更有效/更优雅的方式解决吗?