Сортировка по нескольким ключам метеора mongodb

У меня есть коллекция с именем счет-фактура, я хотел отсортировать свою коллекцию по дате, но результатом должны быть счета-фактуры с номером счета-фактуры, которые должны быть вверху, а счета-фактуры без номера счета-фактуры должны быть внизу.

Я пробовал это, но не работал.

Invoice.find({},{sort:{createdAt :-1, invoiceNumber: 1}})

🤔 А знаете ли вы, что...
JavaScript поддерживает модульную структуру, что способствует организации кода на больших проектах.


89
1

Ответ:

Решено

Насколько я знаю, это невозможно сделать просто так с сортировкой. Вы можете попробовать сначала отсортировать по invoiceNumber, а затем по createdAt, но это не даст вам желаемого результата.

Для этого я предлагаю вам сделать 2 запроса, а затем объединить их в один массив.

const withNumber = Invoice.find({ invoiceNumber: { $exists: true } }, { sort: { createdAt :-1 }});

const withoutNumber = Invoice.find({ invoiceNumber: { $exists: false } }, { sort: { createdAt :-1 }});

const all = [...withNumber, ...withoutNumber];