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作为模型或子文档。