mongoose – 引用子文档的ObjectId

ModelA中的ObjectId是否可以引用modelB中的子文档?

var C = new Schema({...}); var B = new Schema({c: [C]}); var A = new Schema({c: { type: ObjectId, ref: 'ModelB.ModelC' }); var Model_A = mongoose.model('ModelA', A); var Model_B = mongoose.model('ModelB', B); var Model_C = mongoose.model('ModelC', C); 

是的,这是可能的,但你有几个select。


选项1:C作为子文档

如果您真的想使用子文档,则不需要创build单独的模型。 你需要改变你对'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作为模型

(我只提出这个作为替代 – 因为你的例子似乎是多余的,因为你创build'C'作为一个单独的模型以及子文档)

另外,可能有独立的collections,你可以创build一个mongoose模型。 每个将是一个单独的集合:

 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' }); 

是的,它可能,但你需要select,如果你想C作为模型或子文档。