【发布时间】:2019-10-19 01:58:29
【问题描述】:
现在我有一个 products 集合,我将我的产品存储为如下文档:
文档ID:
title: STRING,
price: NUMBER,
images: ARRAY OF OBJECTS,
userImages: ARRAY OF OBJECTS,
thumbnail: STRING,
category: STRING
注意:我的网络应用有大约 1000 种产品。
我正在考虑在客户端进行全文搜索,同时还节省数据库读取,因此我正在考虑在 Firestore 上复制我的数据并将我所有产品的部分副本保存到单个文档中以发送给客户端,这样我就可以用它来实现客户端全文搜索了。
我将创建 allProducts 集合,其中包含一个包含 1000 个字段的文档。这可能吗?
allProducts:集合
包含具有以下字段的单个文档:
每个字段都将包含一个带有产品详细信息的 MAP(对象)。
document_1_ID: { // Same ID as the 'products' collection
title: STRING,
price: NUMBER,
category: STRING,
thumbnail
},
document_2_ID: {
title: STRING,
price: NUMBER,
category: STRING,
thumbnail
},
// AND SO ON...
注意:我仍会保持 products 集合完好无损。
问题
是否可以有一个包含 1000 个字段的文档?限制是多少?
我正在研究这个问题,因为我正在执行客户端全文搜索,因此每个用户都需要访问我的整个产品数据库。而且我不希望每个用户都阅读我拥有的每一个文档,因为我认为这样做的成本不会很好地扩展。
注意 2:我知道文档的最大大小为 1mb。
【问题讨论】:
-
让我告诉你我是如何解决它的,我在一个集合中有 35k 文档,为了实现我们搬到 algolia 的文本搜索,可能你想检查一下,现在 firebase 不支持文本搜索,如果您与 algolia 保持同步 firebase,您可以将搜索功能委托给它......对我们来说,每月花费大约 30 美元
-
谢谢@andresmijares!这就是 Firestore 的建议。但现在我的项目负担不起。您知道是否可以为三个不同的 Firebase/Firestore 项目共享同一个 Algolia 帐户?想象一下,我有 3 个网站,每个网站都有 12k 个文档。我可以使用相同的 Algolia 费用为这 3 个网站提供全文搜索吗?还是我需要为每个人设置一个帐户?
-
algolia 按索引工作,相当于一个集合,他们为您提供一个可以使用的sdk,每个项目都可以拥有自己的云功能来同步,这是完全可能的:)
-
非常感谢。我会再看看!
标签: firebase google-cloud-firestore full-text-search