【发布时间】:2017-08-23 11:43:16
【问题描述】:
我想在 Mongoose 中使用populate 方法来查询一个集合。这是我的架构:
var UnitSchema = new Schema({
name: {
type: String,
required: true
},
unitNumber: Number,
members: [MemberSchema],
orgs: [OrgSchema]
});
var MemberSchema = new mongoose.Schema({
name: {
first: String,
last: String
},
phone: String,
email: String
});
var OrgSchema = new mongoose.Schema({
name: {
type: String,
required: true
},
sortIndex: Number,
roles: [RoleSchema]
});
var RoleSchema = new mongoose.Schema({
name: String,
sortIndex: Number,
member: {
type: Schema.Types.ObjectId,
ref: 'Member'
}
});
这是一个示例Unit 集合:
{
"_id": "58da7bd6e7092e8735646ba0",
"name": "Unit Name",
"orgs": [
{
"name": "Org name",
"sortIndex": 0,
"_id": "58da7bd6e7092e8735646c2d",
"roles": [
{
"name": "Role Name",
"sortIndex": 0,
"member": "58dbd1e6c9a893a7840472ad"
}
]
}
],
"members": [
{
"name": {
"first": "First Name",
"last": "Last Name"
},
"_id": "58dbd1e6c9a893a7840472ad"
}
]
}
如何将Member 文档填充到Roles 集合中的成员字段,这样我的输出将如下所示:
[
{
"name": "Org name",
"sortIndex": 0,
"_id": "58da7bd6e7092e8735646c2d",
"roles": [
{
"name": "Role Name",
"sortIndex": 0,
"member": {
"name": {
"first": "First Name",
"last": "Last Name"
},
"_id": "58dbd1e6c9a893a7840472ad"
}
}
]
}
]
这是我想到的查询:
Unit.findOne({unitNumber: unitNumber}).populate('roles.callings.member').exec(...)
【问题讨论】:
标签: node.js mongodb mongoose mongoose-populate