我可以在子集合中查询和检索文档的字段值吗?
以以下为例:
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
的编号?
答案 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
属性的值。