Привет, ребята, я застрял в одном состоянии, когда мне нужно отсортировать данные, которые соответствуют некоторым условиям, а затем отсортировать их по приоритетным основаниям, т.е. сначала я хочу отсортировать данные по приоритету в порядке убывания, а затем отсортировать их, если приоритет равен 1 (высокий), отсортировать документ по полю createdAt, иначе по полю даты.
В настоящее время я создаю один агрегат самостоятельно, но он не возвращает правильные данные.
model.aggregate([
{
$match: {
jobId,
deprecated: false,
},
},
{
$project: {
document: "$$ROOT",
sort: {
$cond: {
if: {
$eq: ["$priority", 1],
},
then: "$createdAt",
else: "$date",
},
},
},
},
{
$sort: {
priority: -1,
sort: 1,
},
},
]);

эй, ребята, спасибо за ваше время, я решаю проблему, которую использую
я просто добавляю одно поле в $project из-за того, что использую document: "$$ROOT"
поэтому он создает поле документа и хранит в нем все данные, и поэтому поле приоритета недоступно,
я просто добавляю priority:1 в проект $, и он включает это поле. ниже я публикую рабочий код, может быть, он поможет вам, если вы тоже хотите что-то подобное.
model.aggregate([
{
$match: {
jobId: '5c501eed65816d61c6a0af77',
deprecated: false,
},
},
{
$project: {
document: "$$ROOT",
priority: 1,
sort: {
$cond: {
if: {
$eq: ["$priority", 1],
},
then: "$createdAt",
else: "$date",
},
},
},
},
{
$sort: {
priority: -1,
sort: 1,
},
},
])