Как отсортировать модель Монгоила по длине массива, который является полем внутри модели.Монгоидный заказ по длине массива
ответ
Документ говорит, что вы не можете OrderBy используя размер.
Попробуйте добавить новый столбец, содержащий значение размера и сортировку, который будет работать как заказ.
В рубин, вы можете отсортировать массив как это:
my_array.sort_by(&:my_attr)
Он сортирует массив my_array
атрибутом my_attr
каждого элемента внутри массива.
Вы также можете написать это:
my_array.sort_by{|element| element.my_attr }
Который является точно такой же, он будет сортировать атрибутом каждого элемента my_attr
. Этот второй синтаксис заключается в том, когда вы хотите более сложное условие сортировки, чем просто результат метода каждого элемента.
Документация: http://ruby-doc.org/core-2.3.1/Enumerable.html#method-i-sort_by
Монго документация says:
Вы не можете использовать $ размер, чтобы найти диапазон размеров (например: массивы с более чем 1 элемент). Если вам нужно запросить диапазон, создайте поле дополнительного размера , которое вы увеличиваете при добавлении элементов. Индексы не могут использоваться для части размера $ size запроса, хотя, если включены другие выражения запроса , индексы могут использоваться для поиска совпадений на этой части выражения запроса.
Поэтому мы не можем сделать заказ, используя mongo's $size
.
Вы можете решить свою задачу, добавив новое поле, в котором будет храниться размер массива.
class Post
include Mongoid::Document
field :likes, type: Array, default: []
field :likes_size, type: Integer
before_save do
self.likes_size = likes.size
end
end
Сортировать по posts
likes_size
:
Post.order_by(likes_size: :desc)
Я хочу сортировать коллекцию на основе поля, которое находится внутри модели и ее массива. Например, Post - это модель, а «любит» - это поле, которое представляет собой массив user_id. Поэтому я хочу сортировать Post, исходя из длины массива like. –
Спасибо, еще один быстрый вопрос У меня есть Postactivity, которая является моделью, которая имеет post_id как внешний ключ (отношение has_one), и эта модель имеет массив like. теперь, как мне сортировать модель Post. Спасибо заранее ... очень ценю ваше время. –
@BalajiThiru вы можете создать новый вопрос со всеми подробностями. Я постараюсь помочь. –
- 1. Монго порядка по длине массива
- 2. Накладные расходы на заказ по длине
- 3. метеора сортировать по длине массива
- 4. Сортировка json по длине массива
- 5. Сортировка массива строк по длине
- 6. Сортировка данных по длине массива
- 7. Элементы массива фильтра по длине
- 8. PHP | Заказ фотографий массива по прямоугольным
- 9. Сортировка трехмерного массива по длине строк PHP
- 10. сегментирования массива по фиксированной длине в рубине
- 11. Сортировка многомерного массива по длине в PHP
- 12. scala: как подобрать случай по длине массива
- 13. Сортировка массива объектов по длине недвижимости
- 14. Сортировка массива строк по длине элемента
- 15. Сортировка массива строк по длине в ColdFusion?
- 16. Сортировка по длине вложенного массива JSON
- 17. MongoDb найти объекты по длине массива
- 18. Сортировка по длине массива в elasticsearch
- 19. Сортировка массива по длине подразделам массивов
- 20. Фильтр по длине массива в свинге
- 21. Сортировка массива строк по длине (слов) C++
- 22. PHP: Сортировка массива по длине его значений?
- 23. Монгоидный эквивалент create_with
- 24. Заказ запроса по длине строки одного из полей
- 25. Заказ элементов по длине в IEnumerable <T>?
- 26. заказ массива по определенному значению
- 27. Python: Сортировка 2-мерного массива по длине массива?
- 28. Почему индекс javascript массива установлен по длине массива
- 29. Сортировка массива сначала по длине, затем по алфавиту в Java
- 30. vb.net Array.Find строка по длине
Как это относится к вопросу? OP имеет поле массива внутри MongoDB, и они хотят сортировать коллекцию MongoDB по длине этого массива. –
Я хочу сортировать коллекцию на основе поля, которое находится внутри модели и ее массива. Например, Post - это модель, а «любит» - это поле, которое представляет собой массив user_id. Поэтому я хочу сортировать Post, исходя из длины массива like. @muistooshort это именно то, что я хочу. –