Sì, è possibile, ma hai alcune opzioni.
Opzione 1:C come documento secondario
Se si desidera davvero utilizzare documenti secondari, non è necessario creare un modello separato. Devi cambiare il tuo riferimento all'array '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);
Opzione 2:C come modello
(Lo presento solo come alternativa, poiché il tuo esempio sembra ridondante poiché crei "C" come modello separato e come documento secondario)
In alternativa, può avere senso avere collezioni separate, puoi creare un modello di mangusta per ciascuna. Ciascuno sarà una collezione separata:
var Model_A = mongoose.model('ModelA', A);
var Model_B = mongoose.model('ModelB', B);
var Model_C = mongoose.model('ModelC', C);
In questo caso potresti voler fare riferimento direttamente a ciascun modello:
var C = new Schema({...});
var B = new Schema({c: { type: ObjectId, ref: 'ModelC' }});
var A = new Schema({c: { type: ObjectId, ref: 'ModelC' });
Il punto
Sì, è possibile, ma devi scegliere se vuoi C come modello o documento secondario.