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" ] } ] }

Как сделать так, чтобы возвращаемый курсор сортировался в следующем порядке:

  1. документ (ы), которые имеют оба qty > 250 и описание соответствует shoe
  2. документы, которые имеют только описание shoe
  3. документы, которые имеют только qty > 250

Поиск вокруг него выглядит как агрегация 1, ссылка 2 может быть одним из вариантов, за исключением того факта, что минимонго для метеора, похоже, не поддерживает агрегацию в этой точке.

Если это не может быть выполнено с помощью спецификатора / запроса сортировки минимонго и т. Д., Как можно альтернативно отсортировать результаты, как описано выше (при условии, что это делается для массива / объекта, возвращенного при выполнении выборки на курсоре)

0 ответов

Другие вопросы по тегам