Meteor 中的自定义排序 MongoDB

Custom Sorting in Meteor MongoDB

我有一本 Meteor 出版物,其中 return 是 collection 的一组产品。每个文档都包含一个名为 'grade' 的字段,我们为其分配了字符串值 'S'、'A'、'B'、'C' 或 'D' .每个等级代表一个项目的更广泛的条件,其中 'S' 是最好的可能条件,'A' 是下一个最好的,然后是 'B',依此类推...

当我return collection时,我想按年级排序。显然 MongoDB 让 S-Grade 产品默认出现在列表的第一位是没有任何意义的,因为在标准字母排序中 A、B、C 和 D 都排在 S 之前。

有没有一种方法可以设置自定义排序,这样我就可以允许 Grade-S 项目在排序过程中出现在结果列表的顶部,而且还允许 A、B、C 和 D以正确的顺序出现在后面?

我认为 mongodb 没有提供用于排序的自定义比较器,我预计这种操作的性能无论如何都会很差。

最好的选择是使用数字字段进行排序,如果需要,添加字符串以进行显示(并在文档更新等期间保持同步)。

如果不是严格需要,可以避免将字符串存储在数据库中,并在需要显示时将数值映射到字符串。 Meteor 允许您在对集合的查询中指定 transform,平台将为您完成剩下的工作。