У меня есть коллекция с именем счет-фактура, я хотел отсортировать свою коллекцию по дате, но результатом должны быть счета-фактуры с номером счета-фактуры, которые должны быть вверху, а счета-фактуры без номера счета-фактуры должны быть внизу.
Я пробовал это, но не работал.
Invoice.find({},{sort:{createdAt :-1, invoiceNumber: 1}})
🤔 А знаете ли вы, что...
JavaScript поддерживает модульную структуру, что способствует организации кода на больших проектах.
Насколько я знаю, это невозможно сделать просто так с сортировкой. Вы можете попробовать сначала отсортировать по 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];