【问题标题】:Firestore tags data model best practices (array vs dictionary)Firestore 标记数据模型最佳实践(数组与字典)
【发布时间】:2020-03-22 18:21:20
【问题描述】:

我想根据用户输入的标签查询 Firestore 中的一些帖子。每当用户提交帖子时,用户也会随之提交标签。我当前的数据结构如下所示:

postId: {
    tags: {
      "firebase": true,
      "angular": true,
      "cats": false
    }
}

但是,上面的数据结构很难查询。我不能使用 arrayContainsAny 函数,必须下载所有标签并检查每个标签/键是否为真,然后返回帖子。但是,如果我将标签存储为数组:

postId: {
    tags: {
      0: "firebase",
      1: "angular",
      2: "cats"
    }
}

我可以使用类似 postsCollection.whereField("tags", arrayContainsAny: tagsArray) 的 firestore 函数进行快速查询。

将标签存储为数组是否更高效或可扩展?

提前致谢!

【问题讨论】:

    标签: firebase data-structures google-cloud-firestore


    【解决方案1】:

    在 NoSQL 类型的数据库中建模数据的方法没有对错之分。建模的最佳实践始终取决于您要对其执行的查询。

    听起来使用地图对您的用例无效。您已经确定它会使您的查询变得困难,并且使用数组会更方便。在这种情况下,请使用数组,因为您知道它满足您的查询。

    请记住,并非每个数据模型都能满足所有类型的查询。对于这种特殊情况,数组似乎更好,但您很容易遇到另一个查询根本无法正常工作的情况。

    【讨论】:

      猜你喜欢
      • 2019-10-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-14
      • 2012-09-05
      • 2010-12-06
      相关资源
      最近更新 更多