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(回调)
将导致多少读取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,我知道这太好了,不可能是真的。唷,你帮我节省了很多时间。谢谢你,先生!