我的公司要求我从根集合users
中获取所有文档。必须根据第一子级别文档和第二子级别文档中存在的标题为amount
的数字字段的值对它们进行排序。
我不知道如何使用Firestore NoSQL查询轻松实现此目标。您会向我推荐什么?
这里是:
这两个用户的结构如下:
amount
amount
所以我应该得到一个包含user_1
和user_2
的列表。这是一个排序列表。它根据两个名为amount
的字段(分别包含在user_1
下和user_2
下)进行排序。这两个字段都是嵌套的。
答案 0 :(得分:1)
必须根据第一个子级别文档中以及第二个子级别文档中存在的数字字段(标题为金额)的值对它们进行排序。
正如@DougStevenson在其评论中提到的那样,您无法使用Cloud Firestore实现这一目标。在单个查询中无法从子集合(级别1)和另一个子集合(级别2)获取文档。 Firestore不一次性支持跨不同子集合的查询。 Firestore中的查询很浅,这意味着它们仅从查询所针对的集合中获取项目。单个查询只能使用单个集合中的文档属性。
因此,我能想到的最简单的解决方案是两次查询数据库,一次是在子集合中获取文档(级别1),第二次在子集合中获取文档(级别2),然后在客户端进行比较。
您的意见中的想法是一种解决方案,因为在1级文档下添加属性将使您仅查询数据库一次。在Firestore中,您可以在单个查询中简单地链接多个where()
函数。