Вернуть ограниченное количество записей определенного типа, но неограниченное количество других записей?

У меня есть запрос, где мне нужно вернуть 10 записей типа «А», а все остальные записи. Как я могу сделать это?

Обновить: По общему признанию, я мог сделать это с двумя запросами, но я хотел избежать этого, если возможно, думая, что это будет меньше накладных расходов и возможно более производительным. Мой запрос уже является запросом агрегации, который учитывает оба вида записей, мне просто нужно ограничить количество записей одного типа в результатах.

Обновить: Ниже приведен пример запроса, который выдвигает на первый план проблему:

db.books.aggregate([
    {$geoNear: {near: [-118.09771, 33.89244], distanceField: "distance", spherical: true}},
    {$match:    {"type": "Fiction"}},
    {$project:  {
        'title': 1,
        'author': 1,
        'type': 1,
        'typeSortOrder': 
            {$add: [
                {$cond: [{$eq: ['$type', "Fiction"]}, 1, 0]},
                {$cond: [{$eq: ['$type', "Science"]}, 0, 0]},
                {$cond: [{$eq: ['$type', "Horror"]}, 3, 0]}
        ]},
    }},
    {$sort: {'typeSortOrder'}},
    {$limit: 10}
])

db.books.aggregate([
    {$geoNear: {near: [-118.09771, 33.89244], distanceField: "distance", spherical: true}},
    {$match:    {"type": "Horror"}},
    {$project:  {
        'title': 1,
        'author': 1,
        'type': 1,
        'typeSortOrder': 
            {$add: [
                {$cond: [{$eq: ['$type', "Fiction"]}, 1, 0]},
                {$cond: [{$eq: ['$type', "Science"]}, 0, 0]},
                {$cond: [{$eq: ['$type', "Horror"]}, 3, 0]}
        ]},
    }},
    {$sort: {'typeSortOrder'}},
    {$limit: 10}
])

db.books.aggregate([
    {$geoNear: {near: [-118.09771, 33.89244], distanceField: "distance", spherical: true}},
    {$match:    {"type": "Science"}},
    {$project:  {
        'title': 1,
        'author': 1,
        'type': 1,
        'typeSortOrder': 
            {$add: [
                {$cond: [{$eq: ['$type', "Fiction"]}, 1, 0]},
                {$cond: [{$eq: ['$type', "Science"]}, 0, 0]},
                {$cond: [{$eq: ['$type', "Horror"]}, 3, 0]}
        ]},
    }},
    {$sort: {'typeSortOrder'}},
    {$limit: 10}
])

Я хотел бы, чтобы все эти записи возвращались в одном запросе, но ограничить тип не более 10 из любой категории. Я понимаю, что typeSortOrder не должен быть условным, когда запросы разбиты, как это, у меня это было там, когда запросы были одним запросом, изначально (именно туда я хотел бы вернуться).

Ответы на вопрос(4)

Ваш ответ на вопрос