首页 > 解决方案 > 使用 CollectionGroup 查询时如何获取子集合的父文档 ID?

问题描述

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

collection
  document1
    subC
      doc1
  document2
    subC
      doc2

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

var col = FirebaseFirestore.instance.collectionGroup('subC').where('foo', isEqualTo: 'bar');
var snapshot = await col.get();
for (var doc in snapshot.docs) {
  print(doc.id); // Prints doc1, doc2
}

标签: firebasefluttergoogle-cloud-firestore

解决方案


doc.id返回基础文档 ID。您需要首先获取当前的DocumentReference( doc1, doc2),使用该 get CollectionReference( subC),然后获取它的父级,即您的document1and document2

所以,你需要这个:

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
}

推荐阅读