是的,这是可能的,但您有几个选择。
选项 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 作为模型或子文档。