mongoose中怎么populate多个表
时间: 2024-02-11 11:04:56 浏览: 26
在Mongoose中,可以使用`.populate()`方法来填充查询结果中的引用字段。如果要填充多个表,可以在`.populate()`方法中传递多个参数,每个参数对应一个引用字段。
例如,假设我们有一个包含两个引用字段的模型`User`,分别是`posts`和`comments`,我们可以这样填充它们:
```javascript
User.findById(userId)
.populate('posts')
.populate('comments')
.exec(function(err, user) {
// 处理查询结果
});
```
在上面的代码中,我们依次传递了两个参数给`.populate()`方法,分别对应`posts`和`comments`字段。这样,查询结果中`posts`和`comments`字段的值就会被填充为对应的文档对象,而不仅仅是它们的ObjectId。
需要注意的是,如果要填充的引用字段是嵌套在另一个引用字段中的,可以使用点语法来指定嵌套的字段。例如:
```javascript
User.findById(userId)
.populate('posts')
.populate({
path: 'comments',
populate: {
path: 'user',
model: 'User'
}
})
.exec(function(err, user) {
// 处理查询结果
});
```
在上面的代码中,我们填充了`comments`字段,并指定了嵌套的`user`字段。这样,查询结果中`comments`字段的值会被填充为对应的文档对象,同时`comments`中每个文档的`user`字段也会被填充为对应的文档对象。