范围过滤器和不同字段的订单Firestore Swift

时间:2018-04-10 03:03:05

标签: swift firebase google-cloud-firestore

我需要通过createtAt订购用户,但因为我还需要按年龄范围查询,首先需要在同一个字段上进行查询,但这会破坏整个概念。

在不同领域使用年龄范围或是否有解决方法时,最新用户是否无法订购?

    database.collection("users")
        .whereField("birthday", isGreaterThan: exploreSettings.upperAgeDate)
        .whereField("birthday", isLessThan: exploreSettings.lowerAgeDate)
        .whereField("isHidden", isEqualTo: false)
        .order(by: "birthday")
        .order(by: "createdAt", descending: true)
        .limit(to: 8)
        .start(afterDocument: lastSnapshot)
        .getDocuments {...}

1 个答案:

答案 0 :(得分:0)

Firestore查询只能在单个字段上排序。

订购多个值的唯一方法是找到一种方法,以有意义的方式将这两个值组合成一个字段。所以:如果你能找到一种表达生日和创建时间戳之间关系的方法,你可以将这两个值组合在一个字段中并按顺序排列。

请注意,这几乎不可行。我知道这样做的最常见的例子是Geohashes,它以允许查询地理范围的方式组合纬度和经度。