mongodb и meteor, как сортировать документы по предпочтительному совпадению полей при использовании $ или
Допустим, в метеоре у меня есть коллекция минимонго со следующими документами:
{ "_id" : 1, "item" : "abc1", description: "ball", qty: 300 }
{ "_id" : 2, "item" : "abc2", description: "shoe", qty: 100 }
{ "_id" : 3, "item" : "xyz1", description: "tops", qty: 250 }
{ "_id" : 4, "item" : "VWZ1", description: "glue", qty: 300 }
{ "_id" : 5, "item" : "VWZ2", description: "glue", qty: 180 }
{ "_id" : 6, "item" : "XXX1", description: "shoe", qty: 500 }
и я хочу использовать оператор $ или для возврата документов, которые имеют qty > 250
или описание shoe
,
result: { $or: [ { $gt: [ "$qty", 250 ] }, { $in: [ "$description", "shoe" ] } ] }
Как сделать так, чтобы возвращаемый курсор сортировался в следующем порядке:
- документ (ы), которые имеют оба
qty > 250
и описание соответствуетshoe
- документы, которые имеют только описание
shoe
- документы, которые имеют только
qty > 250
Поиск вокруг него выглядит как агрегация 1, ссылка 2 может быть одним из вариантов, за исключением того факта, что минимонго для метеора, похоже, не поддерживает агрегацию в этой точке.
Если это не может быть выполнено с помощью спецификатора / запроса сортировки минимонго и т. Д., Как можно альтернативно отсортировать результаты, как описано выше (при условии, что это делается для массива / объекта, возвращенного при выполнении выборки на курсоре)