我有两个模型:
const UserSchema = new mongoose.Schema({
username: String,
name: String
})
const PostSchema = new mongoose.Schema({
title: String,
user: {
type: mongoose.Schema.Types.ObjectId,
ref: "User",
required: true,
}
})
我知道我可以查询一个单一的职位,如:
Post.findById(ID).populate('user')
但我如何查询一个用户的所有职位?我知道我可以做两个独立的查询,并把它们放在一起,但有没有一种方法可以做到这一点与 Mongoose API本身?
2条答案
按热度按时间57hvy0tb1#
在这种情况下,您应该将模式反转为:
并查询具有所有帖子的用户为:
或使用聚合方法:
bejyjqdl2#
在不更改mongoose模式的情况下,您应该使用MongoDB聚合框架来执行左外连接操作。查找用户和用户的帖子。为此,我们需要使用$lookup聚合。
您还可以使用Mongoose聚合方法,而不是将聚合管道作为对象数组传递给
Model.aggregate()
。例如:
执行结果:
软件包版本:
"mongoose": "^5.13.17"