Arrays 我可以根据子数组中的值查询Firestore吗?

Arrays 我可以根据子数组中的值查询Firestore吗?,arrays,swift,google-cloud-firestore,Arrays,Swift,Google Cloud Firestore,我在消防商店有一辆卡车。集合中的每个卡车都有一个由1个或多个明细表对象组成的数组。每个明细表对象都有一个带有值的经度字段 我想查询卡车的计划经度是否在两个值之间,如中所示: let trucksRef = db.collection("trucks") let sw = bounds.southWest let ne = bounds.northEast //get the trucks bet

我在消防商店有一辆卡车。集合中的每个卡车都有一个由1个或多个明细表对象组成的数组。每个明细表对象都有一个带有值的经度字段

我想查询卡车的计划经度是否在两个值之间,如中所示:

        let trucksRef = db.collection("trucks")
        let sw = bounds.southWest
        let ne = bounds.northEast
        
        //get the trucks between 2 latitude lines (Firestore will only allow "inequality where" clauses on the same field)
        trucksRef
            .whereField("schedules[0].lon", isGreaterThan: sw.longitude)
            .whereField("schedules[0].lon", isLessThan: ne.longitude)

上述代码崩溃,因此显然是错误的。在我的研究中,似乎不可能像这样查询schedules数组。正在寻找对该假设的确认以及问题的可能解决方案。

Firestore无法索引到用于查询的数组字段项,因此没有
[0]
或等效项。您将需要另一种方法来建模数据

如果您只对该查询数组中的第一项感兴趣,则可以将经度复制到顶级字段中


如果你对未知数量的经度值感兴趣,就不可能在单个文档中考虑它们。您应该将计划项目移动到子集合中的单个文档,然后根据需要查询该子集合。

谢谢。我也这么想。我考虑过你的第一个选择,事实上,这是我最初的解决方案。如果我实现你的第二个解决方案,我想我可以查找所有在我的经度值之间的时间表,从那里获取TruckKids,然后查询所有具有这些ID的卡车?六羟甲基三聚氰胺六甲醚。。。也许值得一试,看看表演是什么样子。非常感谢。听起来有可能,是的。