首页 > 解决方案 > Firestore - 按降序排序

问题描述

在我的 Firestore 数据库中,我有字段索引号,数据类型是字符串,但他的数据是数字,如 1、2、3 等。

collectionReference
     .orderBy("indexNo", Query.Direction.DESCENDING)

直到 9 点输出都可以,在 9 点之后,即对于 10、11、12,数据显示为 1、10、11、12、2、3 等等。

请指导我解决它,因为这些数字将决定卡片视图项目在回收站视图中的排列。

谢谢...

标签: javaandroidfirebasegoogle-cloud-firestore

解决方案


如果您的indexNo属性的数据类型是 String 类型,并且您想使用 对结果进行排序Query.Direction.DESCENDING,则结果将不是预期的结果,因为当您对字符串进行排序时,结果是按字典顺序排序的。有两种方法可以解决此问题。第一个是将属性的数据类型从字符串更改为数字,我个人推荐这样做。

这是数字的正常顺序:

  • 1308
  • 1309
  • 1310
  • 1311

这是字符串的正常顺序:

  • “1308”
  • “1309”
  • “131”
  • “1310”

第二种方法是修改数据以获得您想要的行为。对于数字,您可以通过用零填充它们来实现这一点,如下例所示:

  • "0131" //前面加零
  • "0132" //前面加零
  • ……
  • “1308”
  • “1309”
  • “1310”
  • “1311”

推荐阅读