我可以在Firestore搜索中过滤多个字段吗?

时间:2018-09-11 13:46:48

标签: firebase dart flutter google-cloud-firestore

我在应用中使用Firestore数据库。
现在,是否可以在多个字段中搜索特定单词?

例如:想象一个像“ cheesecake” 的单词。现在,我收集了100个文档,每个文档有10个不同的字段。
我可以在所有字段 中过滤单词,以便它返回中包含单词“ cheesecake” 的任何文档。任何字段,都在Flutter中?

2 个答案:

答案 0 :(得分:0)

,您不能这样做
查看Firebase Firestore Documentation page about queries,您将发现以下内容:

  

Cloud Firestore不支持以下类型的查询:

     

这并不直接适用于您的特定用例,但是为什么您的请求将不起作用的原因是相似的:没有索引可让您根据多个不同的字段进行排序。
您可以例如创建对每个字段进行排序的索引,但只能单独查询它们。要了解为什么不支持某些查询,您可以check out this in depth explanatory video from the Firebase team

最后,这意味着您需要进行客户端过滤。

Flutter中的解决方法概念

postcss

答案 1 :(得分:0)

正如creativecreatoror可能没有解释的那样,没有简单的解决方案可以满足您的要求。根据数据库的大小,在客户端进行过滤可能会非常耗时和金钱。

还有另一种可能性,那就是使用Algolia托管的搜索服务对Cloud Firestore文档启用全文搜索。有一个官方的Cloud Function示例显示了如何进行设置:https://github.com/firebase/functions-samples/tree/Node-8/fulltext-search-firestore