Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/223.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用Android在Cloud Firestore中查询特定文档后的集合?_Java_Android_Firebase_Google Cloud Firestore - Fatal编程技术网

Java 如何使用Android在Cloud Firestore中查询特定文档后的集合?

Java 如何使用Android在Cloud Firestore中查询特定文档后的集合?,java,android,firebase,google-cloud-firestore,Java,Android,Firebase,Google Cloud Firestore,我有以下数据库结构: Firestore-root | --- lists (collection) | --- userId1 (document) | | | --- userLists (collection) | | | --- docKey1 (document) |

我有以下数据库结构:

Firestore-root
    |
    --- lists (collection)
          |
          --- userId1 (document)
          |     |
          |     --- userLists (collection)
          |             |
          |             --- docKey1 (document)
          |             |     |
          |             |     --- listName: "ListOne"
          |             |     |
          |             |     --- date: January 15, 2018 at 9:56:24 AM UTC+2
          |             |
          |             --- docKey2 (document)
          |                   |
          |                   --- listName: "ListTwo"
          |                   |
          |                   --- date: January 15, 2018 at 9:58:12 AM UTC+2
          |
          --- userId2 (document)
                |
                --- userLists (collection)
                        |
                        --- docKey1 (document)
                        |     |
                        |     --- listName: "ListOne"
                        |     |
                        |     --- date: January 15, 2018 at 9:56:24 AM UTC+2
                        |
                        --- docKey3 (document)
                              |
                              --- listName: "ListThree"
                              |
                              --- date: January 15, 2018 at 9:59:47 AM UTC+2
使用这种数据库结构,我可以简单地查询与特定用户对应的所有列表。但是,如何查询数据库以获取具有特定列表的所有用户

在这种特殊情况下,如何将拥有
ListOne
的所有用户作为列表?结果应该是:
userId1

我是否需要复制数据,或者是否有其他方法可以做到这一点

编辑:

Firestore-root
    |
    --- allList
           |
           --- listId1 (collection)
                  |
                  --- userId1 (document)
                  |      |
                  |      --- username: "FirstUser"
                  |      |
                  |      --- //other details
                  |
                  --- userId2 (document)
                         |
                         --- username: "SecondUser"
                         |
                         --- //other details

谢谢

无法跨多个子集合扩展查询。查询必须包含在单个集合或子集合中。因此,您猜测需要复制数据才能执行查询是正确的。

实际上有一个技巧可以做到。正如托德·克佩尔曼(Todd Kerpelman)所说,您可以在
docky1
文档中添加
地图,而不是复制数据。您的文档如下所示:

userLists (collection)
    |
    --- docKey1 (document)
          |
          --- listName: "ListOne"
          |
          --- date: January 15, 2018 at 9:56:24 AM UTC+2
          |
          --- users
               |
               --- userId1: true
               |
               --- userId2: true

因此,您可以查询该特定文档以获取所有用户ID。因此,通过这种方式,您可以得到您想要的排序。

谢谢您的回答。如果我将用户对象存储在每个
listId
下,就像在我编辑的帖子中一样,你认为这会有问题吗?基本上,
Firestore/users/userId
下的每个用户对象也将位于
Firestore/allLists/listId/userId
下。这是一种好方法吗?只要数据满足查询的要求,就没有错误的数据建模方法。这不是一个真正的技巧。他建议您更改数据建模以从文档中删除子集合。如果这符合您的需要,请随意更改您的造型。但是,所有依赖于存在子集合的查询都必须进行更改,以适应这种新模型。我理解。谢谢我将采用@Doug的答案,但方法很有趣。无论如何谢谢你!