Firebase 指定集合中存储了多少文档

Firebase 指定集合中存储了多少文档,firebase,google-cloud-firestore,Firebase,Google Cloud Firestore,我正在使用cloud Firestore存储用户数据,我的问题是: 是否可以知道指定集合中存储了多少文档。如果可能,writeFirebase Firestore几乎总是返回整个集合,包括其所有文档。因此,只需计算检索到的数据。代码将取决于您使用的语言/框架,但是所有方法都有很好的描述,如果您已经成功地检索了数据,您应该能够只计算数据项。假设您需要使用AngularFire2为Angular2+提供服务,并且您喜欢使用valueChanges()方法。映射检索到的数据后,就可以对其项目进行计数。

我正在使用cloud Firestore存储用户数据,我的问题是:
是否可以知道指定集合中存储了多少文档。如果可能,write

Firebase Firestore几乎总是返回整个集合,包括其所有文档。因此,只需计算检索到的数据。代码将取决于您使用的语言/框架,但是所有方法都有很好的描述,如果您已经成功地检索了数据,您应该能够只计算数据项。假设您需要使用AngularFire2为Angular2+提供服务,并且您喜欢使用valueChanges()方法。映射检索到的数据后,就可以对其项目进行计数。代码可能如下所示(理想情况下,您还应该添加集合/文档接口):


云Firestore中没有内置聚合查询。因此,要获得集合中的文档数,您确实需要检索所有这些文档(如Emocuc回答的)或将数据库中文档数的计数保留在某个地方

第二种方法是在添加或删除文档时更新数据库中的计数器。这为写操作增加了一些工作,但在显示文档数量之后,您只需读取计数器(而不是读取所有文档)。这种权衡(为了更快/更简单的读取而进行更复杂的写入)在NoSQL数据库中非常常见,也是它们可以扩展到如此多的读卡器的原因之一

我建议你去看看的那个。虽然这些示例比您需要的更复杂,但它们有很好的文档记录,应该是一个有用的起点

import { Injectable       } from '@angular/core';
import { AngularFirestore } from 'angularfire2/firestore';

@Injectable()
export class YourService {

constructor( private _fireStore: AngularFirestore ) { }

getSomething = () => {
  const collection_reference = this._fireStore.collection('logs');
  const collection_data = collection_reference.valueChanges();
  collection_data.map( data => {
      const number_of_documents = data.length;
    } ).subscribe((query) => {});
  }
}