所以,我的 MongoDB 中有一个名为 Post 的集合,如下所示:
var PostSchema = new mongoose.Schema({
creator: {
type: ObjectId,
ref: 'User',
required: true
},
content: {
type: String,
required: true
},
title: {
type: String,
required: true
},
post_type: {
type: String,
required: true
},
view_type: {
type: String,
required: true
},
comments: [{
type: ObjectId,
ref: 'Comment'
}],
reports: [{
type: ObjectId,
ref: 'Report'
}],
attachments: [{
type: ObjectId,
ref: 'Attachment'
}],
created_at: {
type: Date,
default: Date.now
},
updated_at: {
type: Date,
default: Date.now
}
});
以及用户集合
var UserSchema = new mongoose.Schema({
email: {
type: String,
unique: true,
required: true
},
password: {
type: String,
required: true
},
name: {
type: String,
required: true
},
course: {
type: ObjectId,
ref: 'Course',
required: true
},
school: {
type: ObjectId,
ref: 'School',
required: true
},
access: {
type: ObjectId,
ref: 'Access',
required: true
},
classroom: {
type: ObjectId,
ref: 'Classroom'
},
created_at: {
type: Date,
default: Date.now
},
updated_at: {
type: Date,
default: Date.now
}
});
我想要的是一种对帖子进行查询的方法,以获取与登录用户具有相同教室的所有帖子(在 session 中保存),我尝试使用 where 和 find 但没有成功,是否有这样做的方法?
最佳答案
您可以使用如下所示的嵌套查询:
User.find({classroom: req.session.user.classroom}).select('_id')
.exec(function (err, users) {
ids = users.map(function(user) {
return user._id
});
Post.find({creator: {$in: ids}}, function(err, posts) {
console.log(posts);
});
});
假设 req.session.user
是您将用户保存在 session 对象上的方式。如果没有,请根据需要进行修改。
为了澄清起见,我们将用户的 id 映射到一个名为 ids
的数组,因为 $in
查询条件需要一个 ObjectIDs
数组。
关于javascript - Mongoose深度查找查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31776782/