我需要通过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 {...}
答案 0 :(得分:0)
Firestore查询只能在单个字段上排序。
订购多个值的唯一方法是找到一种方法,以有意义的方式将这两个值组合成一个字段。所以:如果你能找到一种表达生日和创建时间戳之间关系的方法,你可以将这两个值组合在一个字段中并按顺序排列。
请注意,这几乎不可行。我知道这样做的最常见的例子是Geohashes,它以允许查询地理范围的方式组合纬度和经度。