Slo*_*ing 11
在 Firebase 的文档中orderBy()
,它说:
您还可以按多个字段排序。例如,如果您想按州排序,并且在每个州内按人口降序排列:
Query query = cities.orderBy("state").orderBy("population", Direction.DESCENDING);
所以,基本上就是这样。使用来自 SQL 的逻辑,您可以通过 ORDER BY 对表进行排序。假设您有一个来自世界各地的客户数据库。然后您可以使用ORDER BY Country
,您将按您想要的任何顺序按他们的国家/地区订购它们。但是,如果您添加第二个参数,比如说Customer Name
,那么它将首先按Country排序,然后在该排序列表中它将按Customer Name排序。例子:
1. Adam | USA |
2. Jake | Germany |
3. Anna | USA |
4. Semir | Croatia |
5. Hans | Germany |
当你打电话时,orderBy("country")
你会得到这个:
1. Semir | Croatia |
2. Jake | Germany |
3. Hans | Germany |
4. Adam | USA |
5. Anna | USA |
然后,当您打电话时,orderBy("customer name")
您会得到以下信息:
1. Semir | Croatia |
2. Hans | Germany |
3. Jake | Germany |
4. Adam | USA |
5. Anna | USA |
您可以看到 Hans 和 Jake 交换了位置,因为 H 在 J 之前,但它们仍然按 Country 名称排序。在你使用这个的情况下:
.orderBy("date", "desc")
.orderBy("number", "desc")
.get()
它将首先按日期排序,然后按数字排序。但是由于您没有相同的日期值,因此您不会注意到任何差异。这也适用于第二个。但是,假设您的某个字段具有相同的日期,因此您的数据如下所示:
collection/
doc1/
date: yesterday at 11:00pm
number: 1
doc2/
date: today at 01:00am
number: 6
doc3/
date: today at 01:00am
number: 0
现在,doc2 和 doc3 的日期都是today at 01:00am
. 现在,当您按日期订购时,它们将在另一个之下,可能 doc2 将首先显示。但是当你使用orderBy("number")
then 时,它会检查相同日期内的数字。所以,如果它只是orderBy("number")
没有“desc”,你会得到这个:
orderBy("date");
output: 1. doc1, 2. doc2, 3. doc3
orderBy("number");
output: 1. doc1, 2. doc3, 3. doc2
因为数字 0 在 6 之前。只需将其反转为desc。
更多推荐
多个,Firestore,orderBy
发布评论