当前位置: 首页 > 知识库问答 >
问题:

Firestore-orderBy数组中的最佳匹配包含任何查询

贾成天
2023-03-14

我在Firestore中收集了一组文档,其中有一个字段是字符串数组,这些是添加到数据中的标记。

用户可以通过在前端选择和取消选择这些标签来过滤数据,所以我正在做一个数组来查询Firestore。

然后,我在最佳匹配上对结果进行评分,因此匹配更多标签的文档被排序到顶部,并显示到页面顶部供用户使用。

我现在正试图用带有文档快照的startAfter作为光标和限制,对这些数据进行分页。但我需要确保,当限制没有扩展到默认顺序(按id升序)中的文档时,评分较高的文档不会被排除在外。我并没有以任何具体的方式对结果集进行排序。

我的问题是,是否有任何方法可以查询Firestore,使其能够按照数组中匹配的大多数标记对查询结果进行排序?如果没有,我如何更改数据模型/逻辑,以便以可扩展的方式执行此操作。

查询整个数据集并自己实现分页似乎不是最实际的解决方案。

共有1个答案

常炯
2023-03-14

我的问题是,是否有任何方法可以以这样一种方式来查询FiRest,即它可以根据数组-包含-任何查询中匹配的最多标签来排序查询结果

不,Firestore无法根据列表字段的大小排序查询结果。

我如何更改数据模型/逻辑,以便以可扩展的方式实现这一点。

您可以将列表的大小存储在另一个字段中,并使用该字段进行排序。如果列表发生变化,您必须确保该字段保持最新。

 类似资料:
  • 当前,我想获取用户未与之交互的所有卡片。但是,这是有问题的,因为我只知道用户与之交互过的卡,所以.wherefield(usersWhoHaveSeenThisCard,arraycontains:currentUserUID)将不起作用,因为我需要一个“arraydoesnotcontain”语句,而该语句并不存在。 最后,用户不能拥有卡,所以我不能在卡文档中创建真/假布尔字段(例如:UserH

  • 在坚持最佳实践的同时,如何使用firestore进行一些关系查询,我面临着一点思维障碍。我正在创建一个feed功能,在这里你可以看到来自朋友的帖子。基本上,我的数据结构如下: 基本上,我正在进行一个查询,以获取friends_uid包含我的uid(本例中为uid1)的所有朋友。然后,一旦我将所有好友uid映射到一个数组,我想进行firestore查询,以获取Post_by字段等于该好友uid数组中

  • 问题内容: 我有一些文件: 我想要得到的结果,其匹配的任何值一样 在这种情况下,我想得到结果:一个数组: 我该怎么办?谢谢。 问题答案: 您应该看一下MongoDB 中的运算符。然后将它与find一起使用,以使您的请求更快,可以使用方法:使用它,mongoDB将返回JS对象而不是Mongoose模型/对象。 然后,您可以在结果数组上使用方法: 希望对您有帮助, 最好的问候

  • 我在集合中有大约30条记录,其中几乎25条包含单词。现在,当我尝试使用时,它不会返回任何东西。 下面是我的查询代码: 下面是我的Firestore截图:

  • 根据问题标题,我使用: 有没有更好的办法?

  • 来自< code>$elementMatch的MongoDB文档: $elemMatch运算符将包含数组字段的文档与至少一个与所有指定查询条件匹配的元素匹配。 但是,如何将包含数组字段的文档与与查询匹配的所有元素进行匹配? 例如,我有这样的文档: 我需要匹配所有具有所有 如果我使用以下查询: 该文档将被匹配,因为至少有一个价格 我也试过这个,但它似乎不工作: 有没有办法排除查看所有价格而不是至少一