はい、可能ですが、いくつかのオプションがあります。
オプション 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 をモデルまたはサブドキュメントとして使用するかどうかを選択する必要があります。