Как использовать размотку дважды? в том же запросе?

я есть база данных, структурированная так:

{
  "Hospitais": [
    {
      "utis": [
        {
          "_id": 893910,
          "nome": "UTI1",
          "leitos": [
            {
              "_id": 128938120,
              "_paciente": "Oliver"
            },
            {
              "_id": 12803918239,
              "_paciente": "Priscilla"
            }
          ]
        },
        {
          "_id": 38471839,
          "nome": "UTI2",
          "leitos": [
            {
              "_id": 48102938109,
              "_paciente": "Serveró"
            },
            {
              "_id": 501293890,
              "_paciente": "Thales"
            }
          ]
        },
        {
          "_id": 58109238190,
          "nome": "UTI3",
          "leitos": [
            {
              "_id": 93801293890,
              "_paciente": "Lucia"
            },
            {
              "_id": 571029390,
              "_paciente": "Amanda"
            }
          ]
        }
      ],
      "nome": "Dorio Silva"
    },
    {
      "utis": [
        {
          "_id": 410923810,
          "nome": "UTI1",
          "leitos": [
            {
              "_id": 48102938190,
              "_paciente": "Neymar"
            },
            {
              "_id": 48102938190,
              "_paciente": "Thiago"
            }
          ]
        },
        {
          "_id": 41092381029,
          "nome": "UTI2",
          "leitos": [
            {
              "_id": 10293182309,
              "_paciente": "Brazza"
            },
            {
              "_id": 38190238,
              "_paciente": "Pelé"
            }
          ]
        },
        {
          "_id": 83102938109,
          "nome": "UTI3",
          "leitos": [
            {
              "_id": 810923810,
              "_paciente": "Aparecida"
            },
            {
              "_id": 20938904209,
              "_paciente": "Pimentinha"
            }
          ]
        }
      ],
      "nome": "Apart Hospital"
    }
]
}

Мне нужно вернуть только массив Hospitais, который соответствует входу «Hospitais.nome», а также, внутри каждого массива Hospitais есть массив «utis», я тоже хочу отфильтровать его,ниже приведен «Ожидаемый результат».

Я пробовал это разными способами, и самый последний, который я пробовал - это код:

db.collection.aggregate(
[
    { "$match": { "Hospitais.nome": 'Dorio Silva'} },
    {
        "$project": {
            _id: 0,
            Hospitais: {
                $filter: {
                    input: "$Hospitais",
                    as: "hospital",
                    cond: { $and: [{$eq: ["$hospital.nome", 'Dorio Silva']},{ $eq: ["$hospital.utis.nome",'UTI1']}]}
                }
            }
        }
    }
]

);

Насколько я понял, фильтр агрегации должен показывать только объекты массива Hospitais, где Hospital.nome - «Дорио Силва», и объект Hospital.utis, где Hospital.utis.nome - «UTI1».

Что я ожидал:

[
	{
		"utis" : [
			{
				"_id" : NumberInt("893910"),
				"nome" : "UTI1",
				"leitos" : [
					{
						"_id" : NumberInt("128938120"),
						"_paciente" : "Oliver"
					},
					{
						"_id" : NumberLong("12803918239"),
						"_paciente" : "Priscilla"
					}
				]
			}
		],
		"nome" : "Dorio Silva"
	}
]

Но это никогда не результат, я могу опубликовать результаты, если их спросят, но я не думаю, что это может быть необходимо.Как правильно запросить мой результат? Что-то не так с тем, как я строю свою базу данных? Это могло быть сделано лучше?

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

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