当前位置: 首页 > 知识库问答 >
问题:

Firestore调查应用程序的数据结构建议[副本]

方寒
2023-03-14

这是我目前的DB结构,我有一个集合存储所有调查问题文档,在每个问题doc下,它有一个Answers子集合,存储所有回答问题的用户。具有挑战性的部分是,我如何随机加载8个未被特定用户回答的问题,而无需查询整个问题集合?什么是成本最低的方法?任何建议都很有帮助。谢谢

以下是我的Db结构:

共有2个答案

叶元凯
2023-03-14

您应该将用户回答的问题的ID存储在用户数据中。然后,您可以使用where子句查询与这些ID不匹配的足够多的文档。https://firebase.google.com/docs/firestore/query-data/get-data#get_multiple_documents_from_a_collection

宋高寒
2023-03-14

最好的选择是将应用程序中的所有问题id存储到数组数据类型的文档中。如果您担心1 MiB的限制,那么您应该考虑在多个文档上划分id。

每次用户回答 8 个问题时,请在 User 对象的数组中添加这些 ID。

具有挑战性的部分是,我如何随机加载8个特定用户没有回答的问题,而不查询整个问题集合?

要加载8个随机问题,您所要做的就是下载两个数组,并从问题id中删除用户已经回答的所有id。这样,您将只有一个用户没有回答的问题id数组。获取其他8个id,将它们添加到用户对象中,依此类推。

还要记住,您还需要保持数据同步,这意味着每次添加新问题时,也会添加到数组中。也为删除操作执行此操作。

 类似资料:
  • 我希望基本上在我的应用程序内翻拍Kik。对于我在firebase聊天应用程序上看到的大多数指南,都有一个主要的消息节点,然后在该节点下面有一个扇出,每个用户都有引用主列表中消息的消息。 根据目前我的Firebase的布局方式,实现类似以下内容会更容易: 因此,当用户向对方发送消息时,我会更新发送者和用户下面的“聊天消息”节点。 有什么理由不这样做吗?我看到每个人都按照我描述的第一种方式进行,但我看

  • 云Firestore的Android示例应用的数据库结构如下所示: 现在考虑这样一种情况:第一家餐厅有大量的评级(这里评级是第一家餐厅id中的其他文档的集合),我只想显示所有餐厅的基本细节,如名称和城市。 我将通过创建如下所示的引用来实现这一点: 我对此有以下问题: 这是正确的方法吗?因为我正在获取一个文档快照,其中还包括我现在不需要的评级集合,因为它会降低加载速度? 我是否应该像在firebas

  • 问题是,从性能上看,这些选项中的哪一个(显然,可能还有第三个我们没有考虑)是最好的。我认为第二种选择我看到了几个缺陷,但我不确定。就延迟和速度而言,遍历数组(如果添加了服务,或者由于用户首先使用了service2,然后使用了Service1),遍历数组的次数会更多)比选项1要高得多。此外,一个用户在一个服务下,这意味着要遍历整个数组,寻找并消除它。我不知道你是专家,你有什么建议吗?所有这些都将上传

  • 注:本章节正在开发中。 虽然 basic 和 advanced 项目模板能够满足你的大部分需求,但是, 你仍有可能需要创建你自己的项目模板来开始项目。 Yii 的项目模板是一个包含 composer.json 文件的仓库,并被注册为一个 Composer package。任何一个仓库都可以被标识为一个 Composer package, 只要让其可以通过 create-project Compos

  • 一个普通的应用程序由以下文件组成: 二进制文件 这个安装在 /usr/bin。 一个桌面文件 这个桌面文件向shell提供关于这个程序的重要信息,例如名称、图标、D-Bus名称,启动的命令行。安装在 /usr/share/applications. 一个图标 这个图标安装在 /usr/share/icons/hicolor/48x48/apps, 无论当前背景是什么系统都会到这里查找图标。 一个设

  • 我正在编写一个创建序列并保存它们的Java程序。我正在寻找最合适的数据结构来保存序列。我事先不知道序列的长度,也不知道我会有多少个序列,序列可以有不同的长度。 我应该使用什么结构?