gpt4 book ai didi

javascript - Mongoose深度查找查询

转载 作者:太空宇宙 更新时间:2023-11-04 00:52:28 25 4
gpt4 key购买 nike

所以,我的 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com