【问题标题】:Query collection by specific documents按特定文档查询集合
【发布时间】:2019-04-15 21:01:47
【问题描述】:

我正面临一个我无法真正理解的问题,希望这里有人能提供一些启示 - 我有一个带有“一流”集合的应用程序,它的文档可以被另一个不同的集合引用和扩展。 它类似于内置在应用程序中的基本项目,用户可以扩展或覆盖其字段,例如价格、描述、状态等...... 我面临的问题是查询基本集合并仅获取在其他地方扩展的项目。

重要的是要查询基本项目本身,以便始终按流行度、相关性或将来重要的任何内容对它们进行查询/排序。 有什么建议吗?? 谢谢

【问题讨论】:

  • 听起来你只是想查询扩展集合。根据您的定义,只有文档在扩展基本集合。如果这不是您要查找的内容,请编辑问题以通过实际显示您尝试查询的数据并解释您正在查询的结果来更详细地解释您要完成的工作尝试制作。
  • @DougStevenson 查询原始集合很重要,因为我可能需要基本的名称/评级排序,而这些字段仅存在于原始集合中

标签: firebase google-cloud-firestore


【解决方案1】:

您将无法使用单个查询来执行此操作,因为查询只能返回来自单个顶级集合的结果。您不能在单个查询中合并或连接两个集合中的文档。

您最终可能会做的是从基本集合中执行单个查询以找到您的结果集,然后从另一个集合中单独获取每个可能的匹配扩展。

或者,您将不得不添加第三个集合,它将每个集合中的合并文档存储到一个可以单独查询的集合中。出于特殊查询的目的,在 NoSQL 数据库中复制数据并不少见。

【讨论】:

  • 我明白了,这个问题背后最重要的想法是保留查询基本集合的选项,因为它的文档可能具有动态字段,例如我需要对查询进行排序的“评级”。例如,如果我要复制该“评级”字段,我将必须始终为所有用户在所有扩展文档中委派更改。我觉得这不是一个好习惯:(
【解决方案2】:

使用 firebase 或任何 nosql 解决方案时,您需要根据您将如何使用数据来设计您的集合,在您的情况下,您将需要第三个集合来存储您将获取的内容,或者您​​必须存储数据的副本在基础集合中

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-06-19
    • 2019-12-28
    • 1970-01-01
    • 2020-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-26
    相关资源
    最近更新 更多