如何组合多个firebase文档以获得组合结果



在我的firebase数据库中,我有三个集合:

Users
{user_id}: {name: "John Smith"}
Items
{item_id}: {value: 12345}
Actions
{action_id}: {action: "example", user: {user_id}, items:{item_id}}

基本上,我只是保留一个ID,而不是将用户和项目存储在Actions Collection下。但现在我需要一个所有操作的列表,这也需要来自Users和Items Collection的信息。我如何有效地查询firebase,这样我就可以得到这样的结果:

{
action: "example",
user: {
name: "John Smith"
},
item: {
value: 1234
}
}

不幸的是,在firebase或类似的数据库中没有这样的东西,基本上,您正在寻找传统的联接,这在NoSQL数据库中是不推荐的。

如果你想在firebase中做到这一点,你需要:

  1. 在这种情况下,从主集合Actions中获取您要查找的元素
  2. 然后,您需要对Items集合进行另一次调用,其中item_id==action.item_id
  3. 然后在动作中赋值["项目"]=项目_

正如我所说,这不是一个建议使用的方法,通常,当您使用NoSQL数据库时,您需要从应用程序中保存整个Item、Action JSON和Item。是的,你会有重复的数据,但这对这种模型来说很好。此外,你不应该期望在整个对象键中的一个特定对象中有太多的更改。如果你正在管理一组大的更改,你可能使用了不正确的DB。

对于聚合查询引用,您可以检查:https://firebase.google.com/docs/firestore/solutions/aggregation

最新更新