$ expr arrayElementAt não funciona em agregação para documento incorporado

Estou fazendo agregação mongo db como

$cursor = $this->collection->aggregate(
            array(
                array(
                    '$project' => array(
                        'FullName' => array('$concat' => array('$first_name', ' ', '$middle_name', ' ', '$last_name')),
                        'FirstMiddle' => array('$concat' => array('$first_name', ' ', '$middle_name')),
                        'FirstLast' => array('$concat' => array('$first_name', ' ', '$last_name')),
                        'FirstName' => array('$concat' => array('$first_name')),
                        'MiddleName' => array('$concat' => array('$middle_name')),
                        'LastName' => array('$concat' => array('$last_name')),
                        'Student' => '$ROOT'
                    )
                ),
                array(
                    '$match' =>
                    array(
                        '$or' => array(
                            array("FullName" => new MongoDB\BSON\Regex($arg, 'i')),
                            array("FirstLast" => new MongoDB\BSON\Regex($arg, 'i')),
                            array("FirstMiddle" => new MongoDB\BSON\Regex($arg, 'i')),
                            array("FirstName" => new MongoDB\BSON\Regex($arg, 'i')),
                            array("MiddleName" => new MongoDB\BSON\Regex($arg, 'i')),
                            array("LastName" => new MongoDB\BSON\Regex($arg, 'i')),
                            array("Student.registration_temp_perm_no" => $arg),
                           '$expr' => array(
                               '$eq'=> array(
                                     array('$arrayElemAt' => array('$allotment_details.room_id', -1)), $this->RoomId)),
                        ),
                       // "Student.assigned_keys" => ['$exists' => false],
                        "Student.schoolId" => new MongoDB\BSON\ObjectID($this->SchoolId)
                    )
                )
            )
 );

Tenho uma coleção que contém dados como

"first_name": "John",
"middle_name": "",
"last_name": "Mayor",
"allotment_details": [
 {
    "allotment_id": "ff666d55-2fcc-79b2-e4da-e165939555bb",
    "room_id": "5be2d9aad2ccda0fdc006a65",
    "bay_id": ObjectId("5be2d9aad2ccda0fdc006a61"),
     ...
}

O código acima está funcionando para concatenação fina de três tipos de nomes e pesquisando todos os dados passados em$arg. Note que eu adicioneiarray('$arrayElemAt' => array('$allotment_details.room_id', -1)), $this->RoomId)) para buscar alunos com base na concatenação de nomes e esses alunos devem ser buscados com base em$this->RoomId.

O código acima não está buscando alunos atribuídos a uma sala, mas está buscando todos os alunos com base na concatenação de nomes. Por favor ajude !!

questionAnswers(1)

yourAnswerToTheQuestion