У меня есть эта коллекция продуктов, и я хочу отобразить top 10 products
на основе пользовательской функции сортировки.
[{ _id: 1, title, tags:['a'], createdAt:ISODate("2016-01-28T00:00:00Z") } ,
{ _id: 2, title, tags:['d','a','e'], createdAt:ISODate("2016-01-24T00:00:00Z") }]
Что я хочу сделать, так это отсортировать его на основе «магической оценки», которую можно рассчитать. Например, исходя из этой формулы: tag_count*5 - number_of_days_since_it_was_created
.
Если первому 1 день, это составляет оценку:
[{_id:1 , score: 4}, {_id:2, score: 10}]
У меня есть несколько идей о том, как я могу этого добиться, но я не уверен, насколько они хороши, тем более что я новичок как в монго, так и в метеоре:
запустите наблюдатель (Meteor.observe) и каждый раз, когда документ изменяется (или создается новый), пересчитывайте оценку и обновляйте ее в самой коллекции. Если я сделаю это, я мог бы просто использовать $orderBy там, где мне это нужно.
после некоторого чтения я обнаружил, что агрегат монго или map_reduce могут помочь мне достичь того же результата, но, насколько я понял, метеор не поддерживает его напрямую
отсортировать коллекцию на стороне клиента как массив, но используя этот метод, я не уверен, как она будет вести себя с разбиением на страницы (учитывая, что я подписываюсь на ограниченное количество документов)
Спасибо за любую информацию, которой вы можете поделиться со мной!