猫鼬中的反向模型关系?

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>}}

两种选择各有利弊,但目前我能想到的只有这两种选择。