如何计算 Firestore 查询/where 操作的读/写?

And*_*iak 5 firebase google-cloud-firestore

Firebase Firestore 文档说:

从集合中获取多个文档

您还可以通过查询集合中的文档,通过一个请求检索多个文档。例如,您可以使用 where() 查询满足某个条件的所有文档,然后使用 get() 检索结果:

var citiesRef = db.collection('cities');
var query = citiesRef.where('capital', '==', true).get()
    .then(snapshot => {
      snapshot.forEach(doc => {
        console.log(doc.id, '=>', doc.data());
      });
    })
    .catch(err => {
      console.log('Error getting documents', err);
    });
Run Code Online (Sandbox Code Playgroud)

如果我有一个包含 N 个文档的集合,对于上述查询,我​​会产生 N 次读取费用还是一次读取费用?

有什么方法可以使用 SDK 在每次调用的基础上检索读/写计数?

作为我提出问题的理由的一些背景,我有一个包含大量文档(大约 20,000 个)的集合。我想以最具成本效益的方式(最少读取)导出整个集合的文档。

Dou*_*son 11

查询产生的每个文档都算作一次文档读取。如果您的查询匹配并返回 N 个文档,则将花费 N 个文档读取。

  • @Mr.Drew 你只需为那些被退回的人付费。例如,如果您的集合包含 100k 文档,但您的查询将结果集过滤为 10k,则您需要为 10k 读取付费。我认为在幕后,查询将对索引进行操作,而付费“工作”将被视为从基础设施内的各个位置收集水平分布的文档。 (5认同)
  • 无论客户端选择如何使用它们,您都需要为一个块中的所有读取付费。快照中的文档都同时在内存中。 (3认同)
  • 那么 .where() 调用会读取整个集合还是仅读取集合中符合条件的文档? (2认同)