Oui, c'est possible, mais vous avez quelques options.
Option 1 :C en tant que sous-document
Si vous voulez vraiment utiliser des sous-documents, vous n'avez pas besoin de créer un modèle séparé. Vous devez changer votre référence au tableau 'c'.
var C = new Schema({...});
var B = new Schema({c: [C]});
var A = new Schema({c: { type: ObjectId, ref: 'ModelB.c' });
var Model_A = mongoose.model('ModelA', A);
var Model_B = mongoose.model('ModelB', B);
Option 2 : C comme modèle
(Je ne présente cela que comme une alternative - car votre exemple semble redondant puisque vous créez 'C' en tant que modèle séparé ainsi qu'un sous-document)
Alternativement, il peut être judicieux d'avoir des collections séparées, vous pouvez créer un modèle de mangouste pour chacune. Chacun fera l'objet d'une collection distincte :
var Model_A = mongoose.model('ModelA', A);
var Model_B = mongoose.model('ModelB', B);
var Model_C = mongoose.model('ModelC', C);
Dans ce cas, vous souhaiterez peut-être référencer directement chaque modèle :
var C = new Schema({...});
var B = new Schema({c: { type: ObjectId, ref: 'ModelC' }});
var A = new Schema({c: { type: ObjectId, ref: 'ModelC' });
Le point
Oui, c'est possible, mais vous devez choisir si vous voulez C comme modèle ou sous-document.