使用 CollectionGroup 查询时如何获取子集合的父文档 ID?

iDe*_*ode 2 firebase flutter google-cloud-firestore

我正在使用集合组查询,但无法获取父文档 ID。

collection
  document1
    subC
      doc1
  document2
    subC
      doc2
Run Code Online (Sandbox Code Playgroud)

在运行查询时,我想获取父文档的名称,即document1document2等,但它返回我doc1doc2。这是我的查询:

collection
  document1
    subC
      doc1
  document2
    subC
      doc2
Run Code Online (Sandbox Code Playgroud)

iDe*_*ode 6

doc.id返回基础文档 ID。您需要首先使用get ( ) 获取当前的DocumentReference( doc1, ),然后获取其父级,即您的和。doc2CollectionReferencesubCdocument1document2

所以,你需要这个:

var col = FirebaseFirestore.instance.collectionGroup('subC').where('foo', isEqualTo: 'bar');
var snapshot = await col.get();
for (var doc in snapshot.docs) {
  print(doc.reference.parent.parent?.id); // Prints document1, document2
}
Run Code Online (Sandbox Code Playgroud)