¿Devuelve un número limitado de registros de cierto tipo, pero un número ilimitado de otros registros?

Tengo una consulta en la que necesito devolver 10 de los registros "Tipo A", mientras devuelvo todos los demás registros. ¿Cómo puedo lograr esto?

Actualizar: Es cierto que podría hacer esto con dos consultas, pero quería evitar eso, si es posible, pensando que sería menos sobrecarga y posiblemente más eficiente. Mi consulta ya es una consulta de agregación que tiene en cuenta ambos tipos de registros, solo necesito limitar el número de un tipo de registro en los resultados.

Actualizar: La siguiente es una consulta de ejemplo que resalta el problema:

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}
])

Me gustaría que se devuelvan todos estos registros en una consulta, pero limite el tipo a un máximo de 10 de cualquier categoría. Me doy cuenta de que typeSortOrder no necesita ser condicional cuando las consultas se desglosan de esta manera, lo tuve allí para cuando las consultas eran una consulta, originalmente (que es a donde me gustaría volver).

Respuestas a la pregunta(4)

Su respuesta a la pregunta