Tak, jest to możliwe, ale masz kilka opcji.
Opcja 1:C jako dokument podrzędny
Jeśli naprawdę chcesz korzystać z poddokumentów, nie musisz tworzyć osobnego modelu. Musisz zmienić swoje odniesienie do tablicy „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);
Opcja 2:C jako model
(Przedstawiam to tylko jako alternatywę - ponieważ twój przykład wydaje się zbędny, ponieważ tworzysz „C” jako osobny model, a także jako poddokument)
Alternatywnie, sensowne może być posiadanie oddzielnych kolekcji, możesz stworzyć model mangusty dla każdej z nich. Każdy będzie osobną kolekcją:
var Model_A = mongoose.model('ModelA', A);
var Model_B = mongoose.model('ModelB', B);
var Model_C = mongoose.model('ModelC', C);
W takim przypadku możesz chcieć odnieść się bezpośrednio do każdego modelu:
var C = new Schema({...});
var B = new Schema({c: { type: ObjectId, ref: 'ModelC' }});
var A = new Schema({c: { type: ObjectId, ref: 'ModelC' });
Punkt
Tak, to możliwe, ale musisz wybrać, czy chcesz C jako model lub poddokument.