我可以在Cloud Firestore的子集合中查询和检索文档的字段值吗?

时间:2020-04-25 14:24:25

标签: java android firebase google-cloud-firestore

我可以在子集合中查询和检索文档的字段值吗?

以以下为例:

States [Collection]
    State 1 [Document]
        Counties [Collection]
           County 1 [Document]
               British Population = 100 [Field]

           County 2 [Document]
               British Population = 200 [Field]

    State 2 [Document]
        Counties [Collection]

           County 1 [Document]
               British Population = 150 [Field]

如何查询英国人口的证件并获取population的编号?

1 个答案:

答案 0 :(得分:1)

由于Counties子集合的名称在所有State文档中都是相同的,因此要获取“英国人口”属性的值,必须使用Firestore collection group query。但是,除非您在Country文档下有另一个可以帮助您创建该查询的属性,否则这将无法工作。在代码中,应如下所示:

db.collectionGroup("Counties").whereEqualTo("nationality", "British").get()
        .addOnSuccessListener(new OnSuccessListener<QuerySnapshot>() {
            @Override
            public void onSuccess(QuerySnapshot queryDocumentSnapshots) {
                // ...
            }
        });

这是这样翻译的。嗨,Firestore,给我所有{strong> all Country集合或子集合中存在的所有Countries文档,其中“国籍”为“英国”。如您所见,我添加了一个名为nationality的新属性,并将相应的值添加为“ British”。由于所有文档确实包含此类属性,因此将返回所有文档。

此外,“英国人口”属性也可以更改为“人口”。现在,在onSuccess()内,您可以查询QuerySnapshot对象并获取population属性的值。