Firestore-降序排列

时间:2018-10-20 15:33:59

标签: java android firebase google-cloud-firestore

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

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

输出正常,直到9点为止,例如9、10、11、12、11、10、11、12、2、3等。

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

谢谢...

3 个答案:

答案 0 :(得分:0)

由于数据类型为字符串,因此顺序为字典顺序。将数字视为字母。 0 = A,1 = B,2 = C ...比较9和10时,应将其视为比较单词“ I”和“ BA”。在字典中,您希望哪个会首先出现?

答案 1 :(得分:0)

如果您的indexNo属性的数据类型为String类型,并且您想使用Query.Direction.DESCENDING来排序结果,则该结果将不会被删除,因为当您订购字符串时,结果按按字典顺序排序。有两种方法可以解决此问题。第一个方法是将属性的数据类型从String更改为 number ,这是我个人推荐的方法。

这是数字的正常顺序:

  • 1308
  • 1309
  • 1310
  • 1311

这是字符串的正常顺序:

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

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

  • “ 0131” //之前加零
  • “ 0132” //之前加零
  • ......
  • “ 1308”
  • “ 1309”
  • “ 1310”
  • “ 1311”

答案 2 :(得分:0)

更好地将数据类型从字符串更改为整数。我做的。 谢谢你的支持。