【问题标题】:Query Google Firestore database by custom object fields通过自定义对象字段查询 Google Firestore 数据库
【发布时间】:2017-11-07 18:44:26
【问题描述】:

我有以下 Google Firestore 数据库结构:

有没有办法通过每个纬度和经度的范围进行查询?例如,我想获取所有具有location.lat 和location.lng 范围内的用户:51.400 到52.000 和-0.100 到-0.300。谁能帮我找出执行此操作所需的查询?

我希望这个问题有意义。任何帮助表示赞赏。

编辑:我没有使用“地理点”数据类型。我正在使用一个带有 2 个浮点数的自定义对象,并想做一个简单的数字比较。问题是我不知道(也找不到)如何构建查询的方法。

【问题讨论】:

标签: google-cloud-firestore


【解决方案1】:

这应该是可能的

userRef.where('location.lat', '>=', 51.400).where('location.lat', '<=', 52.000);

虽然我认为如果不在同一个字段上,您无法在其上链接更多 .where。

您可以尝试对其下方的location.lng 执行类似的查询,然后比较和匹配两个查询中的用户。或者检查location.lng 是否在您的代码中所需的范围内并过滤掉这些用户。无论如何,您最终会从数据库中获得比首选更多的结果,然后丢弃一些结果。

【讨论】:

  • 感谢您的建议。我想这就是我要做的方式。 2 个查询,然后从两者中获取匹配的结果。 Google Firebase 对我面临的每一个问题都越来越失望。
  • 我对 Firestore 也有同感。从表面上看,它比 Firebase 有了很大的改进,但如果你想在深度嵌套的数据库中执行更复杂的查询,它就会变得一团糟。
【解决方案2】:

也许对此的解决方案是拥有一个云功能,在每个文档进入 Firebase 时添加一个 lat_range 和一个 lon_range 字段?不过,您需要有预定义的范围 - 这样您就知道可以查询什么。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-08-28
    • 1970-01-01
    • 2018-03-16
    • 2018-05-24
    • 2021-07-29
    • 1970-01-01
    • 2020-04-09
    相关资源
    最近更新 更多