Of u nu een leeg object of een array opslaat, wat is het verschil? In BSON worden arrays en objecten op dezelfde manier opgeslagen, als een dict . Hoe dan ook, op uw vraag.
Voor de PHP MongoDB-driver is een lege array precies dat, een lege array, dus het slaat het op als een array. Wanneer u een sleutel/waarde-paar aan de array toevoegt, begrijpt de bestuurder dat het een object moet opslaan.
Als je echt een leeg object wilt opslaan, probeer dan:
$d = new \stdClass();
$collection->insert(array('z' => $d));