Ant*_*lov 98 mongoose mongodb node.js
如何在示例文档中填充"组件":
{
"__v": 1,
"_id": "5252875356f64d6d28000001",
"pages": [
{
"__v": 1,
"_id": "5252875a56f64d6d28000002",
"page": {
"components": [
"525287a01877a68528000001"
]
}
}
],
"author": "Book Author",
"title": "Book Title"
}
Run Code Online (Sandbox Code Playgroud)
这是我的JS,我通过Mongoose获取文档:
Project.findById(id).populate('pages').exec(function(err, project) {
res.json(project);
});
Run Code Online (Sandbox Code Playgroud)
Tri*_*Nhu 202
Mongoose 4.5支持这一点
Project.find(query)
.populate({
path: 'pages',
populate: {
path: 'components',
model: 'Component'
}
})
.exec(function(err, docs) {});
Run Code Online (Sandbox Code Playgroud)
Ant*_*lov 104
这对我行得通:
Project.find(query)
.lean()
.populate({ path: 'pages' })
.exec(function(err, docs) {
var options = {
path: 'pages.components',
model: 'Component'
};
if (err) return res.json(500);
Project.populate(docs, options, function (err, projects) {
res.json(projects);
});
});
Run Code Online (Sandbox Code Playgroud)
nik*_*ong 30
正如其他人所说,Mongoose 4支持这一点.值得注意的是,如果需要,您也可以在一个级别以上进行递归 - 尽管在文档中没有注明:
Project.findOne({name: req.query.name})
.populate({
path: 'threads',
populate: {
path: 'messages',
model: 'Message',
populate: {
path: 'user',
model: 'User'
}
}
})
Run Code Online (Sandbox Code Playgroud)
Sha*_*eed 20
您可以像这样填充多个嵌套文档.
Project.find(query)
.populate({
path: 'pages',
populate: [{
path: 'components',
model: 'Component'
},{
path: 'AnotherRef',
model: 'AnotherRef',
select: 'firstname lastname'
}]
})
.exec(function(err, docs) {});
Run Code Online (Sandbox Code Playgroud)
小智 12
这是最好的解决方案:
Car
.find()
.populate({
path: 'pages.page.components'
})
Run Code Online (Sandbox Code Playgroud)
如果您想更深层次地填充另一个级别,您需要执行以下操作:
Airlines.findById(id)
.populate({
path: 'flights',
populate:[
{
path: 'planeType',
model: 'Plane'
},
{
path: 'destination',
model: 'Location',
populate: { // deeper
path: 'state',
model: 'State',
populate: { // even deeper
path: 'region',
model: 'Region'
}
}
}]
})
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
69278 次 |
| 最近记录: |