Vous ne pouvez pas intégrer des schémas de cette manière, avec le raisonnement que ces documents enfants seraient confondus avec des documents complets, voir ce fil de bogue, où il est indiqué :
la raison pour laquelle nous n'avons pas ajouté ce support dans le passé est parce que cela nous laisse nous demander si tous les pré-hooks seront exécutés de la même manière pour le document pseudo-enfant et cela implique que nous pouvons appeler save() sur cet enfant.
La réponse ici est de ne pas partager le schéma, mais juste la définition.
var userdef = { name: String };
var UserSchema = new Schema(userdef);
var BlogPostSchema = new Schema({author: userdef});
Cela se traduirait par un objet utilisateur imbriqué, sans réellement imbriquer le schéma.