我正在配置Mongoose来处理现有的MongoDB,它有两个集合:
Users - 包含字段:
_id: ObjectId
name: String
org_id: ObjectId
Organizations - 包含字段:
_id: ObjectId
name: String
我希望能够按组织数据填充用户文档 .
所以我创建了这两个模型:
const userSchema = new Schema({
name: String,
org_id: {
type: Schema.Types.ObjectId,
ref: 'Organization',
},
});
const User = mongoose.model('User', userSchema);
const organizationSchema = new Schema({
name: String,
code: String,
});
const Organization = mongoose.model('Organization', organizationSchema);
从历史上看,从用户到组织的ref字段被称为 org_id
(而不仅仅是 organization
),组织代码的用户群是:
const user = await User.findById('5b213a69acef4ac0f886cdbc')
.populate('org_id')
.exec();
其中 user.org_id
将由组织数据填充 . 当然,我更乐意在两者中使用 organization
而不是 org_id
- 填充方法和路径(即 user.organizationd
) .
在不改变现有文件的情况下实现它的正确方法是什么?
我可以创建我的Schema方法(而不是填充)和别名,但我正在寻找一个更通用和优雅的解决方案 .
1 回答
我知道你不想改变现有的文件,但对我来说,如果这个字段的名称没有意义,你需要重构 .
更改字段的名称,组织而不是org_id .
为此,您可以使用$ rename命令:MongoDB $rename
在此之后你可以拨打 .populate('organization') .
如果不可能,我相信你找不到比_965461更好的解决方案 .
Mongoose文档:Aliases