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

Firebase Firestore-过滤包含多个数组的数据

上官锦
2023-03-14
db.collection(collectioname)
.where('categoriesArray', 'array-contains', ["Film", "Music"])

一旦我将类别从数组更改为映射,我想我可以使用多个where条件来过滤文档

let query = db.collection(collectionName)
      .where(somefield, '==', true)

this.props.data.filterCategories.forEach((val) => {
  query = query.where(`categories.${val}`, '==', true);
});

query = query
        .orderBy(someOtherField, "desc")
        .limit(itemsPerPage)

const snapshot = await query.get()

现在问题2,firebase要求为复合查询添加索引。我在每个文档中保存的类别是动态的,我无法提前添加这些索引。在这种情况下,理想的解决方案是什么?如有任何帮助,不胜感激。

共有1个答案

张啸
2023-03-14

这是2019年11月7日推出的Firebase JavaScript SDK的新特性:

>

  • 7.3.0版本-2019年11月7日

    数组-包含-任意

    citiesRef.where('regions', 'array-contains-any',
        ['west_coast', 'east_coast']);
    

  •  类似资料:
    • 我希望在每个数组中获取多个对象,但我的代码显示了单个对象的操作。下面是我的PHP代码,我如何添加另一个循环来获取多个对象 这是显示单个物体的结果

    • 问题内容: 我有一套文件,例如 如标题中所述:是否可以使用Nest过滤包含给定标签的所有文档? 例如,上面的记录将匹配[‘c’,’d’] 还是应该手动构建多个“ OR”? 问题答案: 编辑:下面的位集可能是有趣的读物,但答案本身有点过时。 其中一些功能在2.x中有所变化。Slawek还在另一个答案中指出,在这种情况下,查询是使搜索干燥的一种简便方法。最后重构为当前最佳实践。—nz 您可能需要带有子

    • 所以我有一个练习问题,我应该用员工的信息创建一个数组,并将其传递给类;我的代码有一个问题,我似乎想不出来。 代码的目的是:将代码中看到的信息放入数组,然后传递给类中的方法,然后打印给用户。(类中的代码非常好,因此这里没有包括它)。

    • 问题内容: 如果我有一个简单的集合,例如: 如果我要搜索含有维生素B6的水果,则可以执行以下操作: 这样一来,我便可以看到我收藏的所有含有维生素A的水果。但是,我如何能够搜索含有多种维生素(例如维生素B6和C)的水果?我不能简单地搜索,因为那样会寻找数组,而不是独立的字符串。 在Cloud Firestore中甚至有可能吗?如果没有,还有其他替代方法吗? 问题答案: 通过在查询中链接条件来寻找匹配

    • 在Cloud Firestore中这甚至是可能的吗?如果没有的话,有没有其他方法可以做到这一点?

    • 问题内容: 所以,如果我有一个数组: 还有另一个数组 我希望有一些ng-repeat可以仅通过出现在$ filterBy中的项来过滤$ scope.letters。 我希望能够做到以下几点: 并打印b,c 我知道这是一个非常愚蠢的示例,但是有没有一种方法可以根据另一个数组对象的内容来过滤angular.js表达式? 问题答案: 您应该尝试这样的事情: JS: HTML: 您可以尝试现场示例。