计算一个特定的字段在Firestore与JavaScript



我有一个名为users的集合,文档中的一个字段有一个名为valid的字符串类型,其值可以是yesno

我想创建一个查询来显示文档的数量,有效字段= =是的,然后显示总数。下面的代码我只输出yes yes到控制台,这是正确的,但我希望它显示2,以表明有2个结果。

db.collection('users').where('valid', '==', 'yes').get().then(snapshot => {
snapshot.docs.forEach(doc => {
console.log(doc.data().valid);
});
});

(2022-10-20)编辑:

从现在开始,计数集合中的文档或查询返回的文档实际上不需要保存计数器。因此,您可以使用新的count()方法对文档进行计数,该方法为:

返回一个查询,该查询对此查询的结果集中的文档进行计数。

这个新功能是在今年的Firebase峰会上宣布的。请记住,此功能不阅读实际的文件。根据官方文档:

对于诸如count()之类的聚合查询,对于查询匹配的每批最多1000个索引项,将收取一次文档读取费用。对于匹配0个索引条目的聚合查询,至少读取一个文档。

例如,匹配0到1000个索引条目的count()操作将为一次文档读取计费。对于匹配1500个索引条目的count()操作,将收取2次文档读取费用。


QuerySnapshot类包含一个名为size的字段,它返回:

querysapshot中的文档数量。

那么在你的代码中,这将是:

db.collection('users').where('valid', '==', 'yes').get().then(snapshot => {
console.log(snap.size);
});

这个代码的结果将是:

2

但请注意,这将适用于一小部分文档。我写了一篇文章叫:

  • 如何计算Firestore集合中的文档数量?

我已经解释了一些可以帮助您以更便宜的方式实现相同目标的替代实践。

最新更新