【发布时间】:2019-01-01 03:45:21
【问题描述】:
我正在配置 Mongoose 以在现有的 MongoDB 上工作,该 MongoDB 具有以下两个集合:
用户 - 有字段:
_id: ObjectId
name: String
org_id: ObjectId
组织 - 带有字段:
_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 将由组织数据填充。当然,我会更高兴在填充方法和路径(即user.organizationd)中同时使用organization 而不是org_id。
在不更改现有文档的情况下实现它的正确方法是什么?
我可以创建我的 Schema 方法(而不是填充)和别名,但我正在寻找更通用和更优雅的解决方案。
【问题讨论】:
-
你可以试试
$lookup聚合...stackoverflow.com/questions/49953780/… -
这能回答你的问题吗? How to rename path in response for populate
标签: node.js mongodb mongoose mongoose-schema