Order By с Ruby и MongoID не сортирует - PullRequest
0 голосов
/ 21 декабря 2018

Я не могу заставить order_by работать с mongoId, кроме как с :created_at.Это прекрасно работает:

Product.order_by(amount_money: :asc).limit(100)

Но как только я изменяю поле на что-то еще, оно не работает.Итак, я ищу способ сортировки данных перед их передачей.

1 Ответ

0 голосов
/ 15 января 2019

У меня была такая же проблема.причина в том, что MongoID хранит значения BigDecimal в виде строки в коллекциях MongoDB.и сортировка строк отвратительна.

irb(main):001:0> ["1" , "200", "8", "12"].sort
=> ["1", "12", "200", "8"]

вы можете изменить это на float, это решит, но float не является правильным форматом данных для обработки валюты.поэтому для сортировки используйте отдельное поле с плавающей точкой, пока MongoID не исправит ошибку.

...