Firebase 如何计算子集合读取数?

Firebase 如何计算子集合读取数?,firebase,google-cloud-firestore,Firebase,Google Cloud Firestore,让我们以一个结构非常简单的数据库为例。它有一个用户集合和一个消息子集合 service cloud.firestore { match /databases/{database}/documents { match /users/{id} { allow read, write: if true; match /messages/{id} { allow read, write: if true; } } } 假设目标用户

让我们以一个结构非常简单的数据库为例。它有一个用户集合和一个消息子集合

service cloud.firestore {
  match /databases/{database}/documents {
    match /users/{id} {
      allow read, write: if true;
      match /messages/{id} {
        allow read, write: if true;
      }
    }
}
假设目标用户有100条消息

  • 运行此
    db.collection('users').doc(targetUserId).get()
    ,将导致多少次读取
  • 运行此
    db.collection('users').doc(targetUserId).onSnapshot(回调)
    将导致多少读取
  • 更新/删除/添加消息时是否会调用subscription回调?每次调用需要多少次读取 从:

    当您侦听查询结果时,每次添加或更新结果集中的文档时,您都要支付读取费用。由于文档已更改而从结果集中删除文档时,还将收取读取费用。(相反,当删除文档时,您不需要支付读取费用。)

    因此,如果您阅读了一份文档,那么您将只为该文档的阅读收取费用。如果您阅读100份文件,您将被收取100份文件阅读费

    同样的概念,即使您使用的是
    onSnapshot()
    ,如果您正在收听整个集合,并且您有一个活动的
    onSnapshot()
    侦听器,那么是的,每次在集合中添加、更改或删除新文档时,您都将为文档读取操作收取费用。如果您正在收听的文档中有一个活动的
    onSnapshot()
    ,则您将为读取该文档而付费。

    来自:

    当您侦听查询结果时,每次添加或更新结果集中的文档时,您都要支付读取费用。由于文档已更改而从结果集中删除文档时,还将收取读取费用。(相反,当删除文档时,您不需要支付读取费用。)

    因此,如果您阅读了一份文档,那么您将只为该文档的阅读收取费用。如果您阅读100份文件,您将被收取100份文件阅读费


    同样的概念,即使您使用的是
    onSnapshot()
    ,如果您正在收听整个集合,并且您有一个活动的
    onSnapshot()
    侦听器,那么是的,每次在集合中添加、更改或删除新文档时,您都将为文档读取操作收取费用。如果您正在收听的文档中有一个活动的
    onSnapshot()
    ,则您将为该文档的读取收取费用。

    谢谢您,先生!一个简单的问题。我的理解正确吗?当我运行
    db.collection('users').doc(targetUserId).get()
    时,我收到一个已经填充了messages子集合的用户文档。换句话说,我不需要对消息进行单独的读取,所有这些都需要1次读取,对吗?@manidos否,如果您获取一个
    用户
    文档,您将不会收到
    消息
    子集合。Firestore中的查询很肤浅。这意味着您将不得不查询子集合(并为这些阅读付费)@RenaudTarnec,我知道这太好了,不可能是真的。唷,你帮我节省了很多时间。谢谢你,先生!谢谢你,先生!一个简单的问题。我的理解正确吗?当我运行
    db.collection('users').doc(targetUserId).get()
    时,我收到一个已经填充了messages子集合的用户文档。换句话说,我不需要对消息进行单独的读取,所有这些都需要1次读取,对吗?@manidos否,如果您获取一个
    用户
    文档,您将不会收到
    消息
    子集合。Firestore中的查询很肤浅。这意味着您将不得不查询子集合(并为这些阅读付费)@RenaudTarnec,我知道这太好了,不可能是真的。唷,你帮我节省了很多时间。谢谢你,先生!