首页 > 解决方案 > 在 Cloud Firestore 中查询集合时,我可以遍历对象类型文档字段吗?

问题描述

我有一个集合“foo”。集合中的每个文档都有一个属性/字段“bar”,它是一个对象数组,如下所示:

foo = [{
    bar: [{
        id: "random_string",
        "status": "string"
    }, {
        id: "random_string",
        "status": "string2"
    }]
}, {
    bar: [{
        id: "random_string",
        "status": "string"
    }, {
        id: "random_string",
        "status": "string2"
    }]
}]

我想要实现的是我希望能够查询数据库,以便我可以获得两个不同的集合,一个包含“foo”集合中的所有文档,这些文档具有“string”作为至少一个对象的值在“bar”数组中,以及具有“string2”作为“bar”数组中至少一个对象的值的所有文档的另一个集合。

这甚至可能吗?我为此付出了很多努力,因此将不胜感激任何帮助。如果需要,我也很乐意更改数据库架构,完全愿意接受建议!

标签: firebasegoogle-cloud-firestore

解决方案


您无法通过单个查询执行此操作,因为 Firestore 当前不支持逻辑 OR 条件。换句话说,您不可能有一个查询,它可以为您提供一组条件中的任何一个为真的所有文档。

此外,您需要能够调用文档中的特定字段才能对其执行查询。如果没有要使用的特定字段,查询就无法使用索引来加快速度,并且查询永远不会以 Firestore 提供的幅度进行扩展。


推荐阅读