【问题标题】:FireStore Query sub collectionFireStore 查询子集合
【发布时间】:2017-12-16 17:05:41
【问题描述】:

我在 FireStore 中有以下结构,

  • 问题[收藏]

    • 测验 1 [文档]

      • 结果[集合]

我想在问题集合中有问题,然后,当用户回答问题时,他/她的结果以用户的字符串 id 作为 id 存储在问题的子集合中。我的问题是,我如何查询以获取用户未回答的问题。即未回答的问题是那些没有以用户 ID 作为其 ID 的结果的问题。希望对此足够清楚。谢谢FireStore Screenshot

val questionsRef = db.collection("questions")
val query = questionsRef.whereEqualTo(
        questionsRef.document().collection( "results" ).document(App.INSTANCE.appUUIDString), null)
        .limit(50).get()

【问题讨论】:

    标签: android firebase kotlin google-cloud-firestore


    【解决方案1】:

    一种方法是在用户记录(或由 userId 索引的单独集合)中有一个对象,该对象列出他们已回答的问题,然后查询他们未回答的问题。 (这需要获取所有问题的列表并删除已回答的问题。)您必须在循环中逐一检索问题。

    在 no-sql 数据库中,您最终会为这种类型的结构创建多个索引。

    【讨论】:

    • 不会检索所有问题并每次循环寻找新问题会导致性能下降吗?
    • 如果是频繁操作,您可能希望在本地缓存它们。该操作肯定比单个查询慢,但此时单个查询不可用。我读到这并不可怕,因为 Firebase 保持流打开,所以它并不像每次都创建一个完整的 REST/HTTP 调用那么糟糕。
    猜你喜欢
    • 2019-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-12
    • 2020-07-26
    • 1970-01-01
    相关资源
    最近更新 更多