dart Flutter Firebase获取文档计数[重复]

4ktjp1zp  于 5个月前  发布在  Flutter
关注(0)|答案(1)|浏览(65)

此问题在此处已有答案

Firestore query returns no documents even though they are shown in the console in italics(2个答案)
Firestore DB - documents shown in italics(4个答案)
Firestore document/subcollection is not existing(1个回答)
Flutter - Firebase Firestore document uid does not exists(1个回答)
26天前关闭
我试图从Firebase获取文档的计数。但是,我意识到如果文档没有字段,则不计数。

Stream<int> sumOfDoc() async* {
  var snapshot = await FirebaseFirestore.instance
      .collection("GHANA SUPPORT CENTER")
      .get();
  yield snapshot.docs.length;
}

字符集
我得到的计数为零,即使有文档。
我想要"GHANA SUPPORT CENTER"集合中的文档总数。但是这些文档没有字段。但是,每个文档都有一个子集合,其中包含字段。我对子集合不感兴趣。我对主集合中的文档总数(没有字段)感兴趣。我该如何操作?


的数据


sxpgvts3

sxpgvts31#

我意识到,如果一个文档有一个空字段,它被认为是零。
不,如果一个文档不存在,那么你统计的时候就不会考虑它。GHANA SUPPORT CENTER集合里面存在的文档是不存在的。为什么这么说呢,因为那些文档ID是written in italics
如果你想统计这些文档,你必须在这些文档中至少添加一个任意类型的字段。该字段甚至可以包含null值。
一个非常重要的事情是,当你调用get()时,你将不得不支付一定数量的读取操作,该数量等于该集合中存在的文档数量。如果你有很多文档,这可能会很昂贵。在这种情况下,最好的解决方案是使用像COUNT()这样的聚合查询,在这种情况下,你将不得不为每个文档读取支付一次高达1的读取操作,因此,计数结果为0-1000的计数被记为1次文档读取,1001-2000的计数被记为2次文档读取,依此类推。

相关问题