はい、可能ですが、いくつかのオプションがあります。
オプション1:サブドキュメントとしてのC
本当にサブドキュメントを使用したい場合は、別のモデルを作成する必要はありません。 '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);
オプション2:モデルとしてのC
(これは代替案としてのみ提示します。「C」を別のモデルおよびサブドキュメントとして作成するため、例が冗長に見えるためです)
または、個別のコレクションを用意することも理にかなっています。それぞれにマングースモデルを作成できます。それぞれが個別のコレクションになります:
var Model_A = mongoose.model('ModelA', A);
var Model_B = mongoose.model('ModelB', B);
var Model_C = mongoose.model('ModelC', C);
この場合、各モデルを直接参照することをお勧めします:
var C = new Schema({...});
var B = new Schema({c: { type: ObjectId, ref: 'ModelC' }});
var A = new Schema({c: { type: ObjectId, ref: 'ModelC' });
ポイント
はい、可能ですが、Cをモデルまたはサブドキュメントとして使用するかどうかを選択する必要があります。