Que vous stockiez un objet vide ou un tableau, quelle est la différence ? Dans BSON, les tableaux et les objets sont stockés de la même manière, comme un dict . Quoi qu'il en soit, à votre question.
Pour le pilote PHP MongoDB, un tableau vide n'est que cela, un tableau vide, il le stocke donc sous forme de tableau. Lorsque vous ajoutez une paire clé/valeur au tableau, c'est ainsi que le pilote comprend qu'il doit stocker un objet.
Si vous voulez vraiment stocker un objet vide, essayez :
$d = new \stdClass();
$collection->insert(array('z' => $d));