mongoose 如何获取引用的obj mongodb

g52tjvyc  于 2022-11-13  发布在  Go
关注(0)|答案(1)|浏览(139)

所以我正在构建一个web应用程序,使用mongodb _ mongoose,我选择这个数据库是因为我以前用过它,它是一个非常容易和快速的上手。我现在遇到一些用例,我认为关系数据库会更好。但我在这里是为了在我为mongo删除所有数据库代码之前,看看我是否能找到一个使用mongo数据库的修复程序。
我有三个集合,一个是用户集合,一个是挂起的作业集合,一个是已完成的作业集合。我需要运行一个挂起的作业,然后将其从集合中删除,并创建一个已完成的作业条目。这两个作业集合都通过我的用户模型上的对象ID引用列表字段连接到用户。我知道如何获取特定用户的所有挂起的作业和已完成的作业。

const resp = await User.findOne({username:username}).populate(['pendingJobs', 'completedJobs'])

但是,如何获取特定作业的用户?

  • 编辑

挂起作业模型

const pendingJobModel = new mongoose.Schema({
    date:{type:String, required: true, unique:true},
    startTime:{type:String, required: true},
    endTime:{type:String, required: true},
    courseList:{type:[String], required: true},
    member:{type:String},
    clubUsername:{type:String, required: true},
    clubPassword:{type:{token:String, iv:String}, required:true},
    proxy:{type:Boolean, required: true, default:false},
    active:{type:Boolean, required: true, default:false},
},{collection:'pendingjobs'})

module.exports = mongoose.model('PendingJob', pendingJobModel)

已完成作业模型

const completedJobModel = new mongoose.Schema({
    date:{type:String, required: true, unique:true},
    successful:{type:String, required: true},
    time:{type:String},
    course:{type:String},
    member:{type:String},
},{collection:'completedjobs'})

module.exports = mongoose.model('CompletedJob', completedJobModel)

用户模型

const userModel = new mongoose.Schema({
    username:{type:String, required: true, unique:true},
    password:{type:String, required: true,},
    refreshToken:{type:String, default: ''},
    proxyConfig:{type: mongoose.Types.ObjectId, ref:'Proxy'},
    pendingJobs:{type: [mongoose.Types.ObjectId], ref:'PendingJob'},
    completedJobs:{type: [mongoose.Types.ObjectId], ref:'CompletedJob'}
},{collection:'users'})

module.exports = mongoose.model('User', userModel)

感谢如此peeps的帮助在先进!!

h79rfbju

h79rfbju1#

您可以只根据pendingJobs/completedJobs属性查询用户:

const user = await User.findOne({ pendingJobs: pending_job_id });

...

const user = await User.findOne({ completedJobs: complited_job_id });

相关问题