У меня есть коллекция HostelTbl вроде
{
"_id": ObjectId("5ae845b3d2ccda137000595d"),
"Name": "abc",
"Address": "gggswwrerghyjh",
"NoOfFloors": NumberInt(4),
"Approved": "Yes",
"SchoolId": ObjectId("5a8e9025ff24ae113c005d42"),
"RoomsDetails": [
{
"RoomId": "80a1761f-f8ee-a78f-c6ab-6f9bfbdb8ea3",
"FloorNumber": "3",
"RoomNumber": "5",
"RoomType": ObjectId("5ae8267ed2ccda137000595b"),
"NumberOfBeds": "4"
},
{
"RoomId": "56a1761f-f8ee-a78f-c6ab-6f9bfbdb8es3",
"FloorNumber": "3",
"RoomNumber": "4",
"RoomType": ObjectId("5ae8267ed2ccda137000595b"),
"NumberOfBeds": "5"
}
]
}
Обратите внимание, что он содержит встроенный документ RoomsDetails. Теперь я хочу получить только один
конкретный вложенный документ на основе RoomId
Я пытался
public function fetchRoomById()
{
$cursor = $this->collection->aggregate(array(
array(
'$match' => array(
"_id" => new MongoDB\BSON\ObjectID($this->id)),
)
),
array(
'$project' => array(
'RoomsDetails' => array(
'$filter' => array(
'input' => '$RoomsDetails',
'as' => 'Rooms',
'cond' => array(
'$eq' => array('$$Rooms.RoomId', $this->RoomId)
)
)
),
)
)
);
return $cursor->toArray();
}
Не возвращает сопоставленный внедренный документ, вместо основного документа возвращается основной документ.
Пожалуйста, помогите