想象一下我有一系列文件:
收藏集:
'products'
在该集合中,我有文档,每个文档都有一个非常重的字段,在将其发送给客户之前,我希望对其进行过滤。
文档 product1
:
{
id: 'someUniqueKey',
title: 'This is the title',
price: 35.00,
heavyField: [
'longStringxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
'longStringxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
'longStringxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
'longStringxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
'longStringxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
'longStringxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
}
我可以在products
集合中查询那些文档,而将这个特定的heavyField
放在我的答复之外吗?
我希望能够过滤掉其中1个字段的文档。也许选择我想在我的客户上收到的字段。
这可能吗?还是在这种情况下,最好将数据的结构设置为不同,并将heavyField
保留在其他集合中?
答案 0 :(得分:1)
在SQL中,在查询中将其称为“ projection”。 Cloud Firestore不支持Web和移动客户端SDK的预测。相反,您应该将“大量”字段放入另一个集合中的文档中,并仅在需要时进行查询。
如果您想知道为什么,则部分与客户端本地持久层的工作方式有关。如果给定文档只在本地存在某些字段,则缓存将变得更加复杂。简单地获取和存储整个文档要简单得多,因此毫无疑问该文档是否在本地可用。
出于数据建模的目的,最好将文档视为无法分解的“原子单位”,全部或全部。