Требование, установленное MGMT и продажами, конечно, заключается в том, что результаты запроса должны содержать конкретный документ в качестве первого результата, а затем все другие документы, соответствующие запросу.
Вот очень упрощенный пример моегоdata:
{ _id: 1,
title: 'other item',
category: 'show'
}
{ _id: 2,
title: 'THE ITEM THAT MUST BE RETURNED FIRST',
category: 'show'
}
{ _id: 3,
title: 'other item 2',
category: 'show'
}
{ _id: 4,
title: 'item not matching query',
category: 'hide'
}
Мне передано значение id
, { _id : 2 }
в этом примере в теле запроса http, и мне нужно запросить все остальные документы, соответствующие некоторым критериям, { category: 'show' }
в этом примере, но статья с id == 2
должна быть первым возвращенным документом:
//pseudo-code. I know this is not even close
itemsCollection.aggregate([
{ $match : { category: 'show'} }
// sort, but with item with id == 2 at top, and the rest sorted by title ASC
{ $sort : { {item_with_id_2: first_returned }, {title: 1} }
])
Выше приведен псевдокод, для которого нужно, чтобы результат выглядел следующим образом:
{ _id: 2,
title: 'THE ITEM THAT MUST BE RETURNED FIRST',
category: 'show'
}
{ _id: 1,
title: 'other item',
category: 'show'
}
{ _id: 3,
title: 'other item 2',
category: 'show'
}
Как заставить один конкретный документ, чей id
у меня есть, в верхней части результатов запроса?