Firestore 中的多个 orderBy

互联网 更新时间:2023-04-26 21:05:14

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

本文发布于:2023-04-26 21:05:13,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/hyzx/27b0d6d1462d922362825e271838be7f.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:多个   Firestore   orderBy

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!

  • 89744文章数
  • 23114阅读数
  • 0评论数