猫鼬中的反向模型关系?
Reverse models relationship in mongoose?
我有两个模式(投资组合和与投资组合相关的项目):
portfolioSchema = new Schema({
name: {type: String, required: true, unique: true},
isActive: {type: Boolean, default: true}
});
projectSchema = new Schema({
name: {type: String, required: true, unique: true},
isActive: {type: Boolean, required: true, default: true},
portfolio: {type: mongoose.Schema.Types.ObjectId, ref: 'portfolioSchema', required: true},
isCodeBaseFullyOwned: {type: Boolean, required: true, default: false}
});
有没有办法select所有作品集和'populate'他们的相关项目?我可以按投资组合对项目进行分组,但如果投资组合中没有项目,我也必须想办法额外提取这些信息。
有两种方法可以做到这一点。
一个是在投资组合中添加一组 projectIds,然后您可以填充它,但如果您不小心清理 up/managing 更新引用,可能会变得混乱。
这可以通过将 portfolioSchema 更新为
来完成
portfolioSchema = new Schema({
name: {type: String, required: true, unique: true},
isActive: {type: Boolean, default: true},
projects: [{type: mongoose.Schema.Types.ObjectId, ref: 'projectSchema', required: true}]
});
另一个选项需要按照您所说的投资组合对项目进行分组,然后收集所有 return 的投资组合 ID,然后 运行 第二个查询以获取
的投资组合
{_id: {$nin: <array of already returned portfolio ids>}}
两种选择各有利弊,但目前我能想到的只有这两种选择。
我有两个模式(投资组合和与投资组合相关的项目):
portfolioSchema = new Schema({
name: {type: String, required: true, unique: true},
isActive: {type: Boolean, default: true}
});
projectSchema = new Schema({
name: {type: String, required: true, unique: true},
isActive: {type: Boolean, required: true, default: true},
portfolio: {type: mongoose.Schema.Types.ObjectId, ref: 'portfolioSchema', required: true},
isCodeBaseFullyOwned: {type: Boolean, required: true, default: false}
});
有没有办法select所有作品集和'populate'他们的相关项目?我可以按投资组合对项目进行分组,但如果投资组合中没有项目,我也必须想办法额外提取这些信息。
有两种方法可以做到这一点。 一个是在投资组合中添加一组 projectIds,然后您可以填充它,但如果您不小心清理 up/managing 更新引用,可能会变得混乱。
这可以通过将 portfolioSchema 更新为
来完成portfolioSchema = new Schema({
name: {type: String, required: true, unique: true},
isActive: {type: Boolean, default: true},
projects: [{type: mongoose.Schema.Types.ObjectId, ref: 'projectSchema', required: true}]
});
另一个选项需要按照您所说的投资组合对项目进行分组,然后收集所有 return 的投资组合 ID,然后 运行 第二个查询以获取
的投资组合{_id: {$nin: <array of already returned portfolio ids>}}
两种选择各有利弊,但目前我能想到的只有这两种选择。