MongoDB:基于另一个集合更新一个集合
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MongoDB:基于另一个集合更新一个集合相关的知识,希望对你有一定的参考价值。
您好,我有一个在线测验门户网站的项目。这些是我的模型:
用户模型
const userSchema = new Schema({
firstName: { type: String, required: true, maxlength: 15 },
lastName: { type: String, required: true, maxlength: 15 },
rank: Number
});
评分模型
const scoreSchema = new Schema({
userId: ObjectId,
quizId: ObjectId,
marks: Number,
answers: [{ type: Object }],
});
[我想在将记录插入分数模型后每次更新用户模型。
毫不奇怪,这是我的排名公式。
平均=总分数/参与测验的总数
我如何使用MongoDB或Mongoose实现此目的?
非常感谢。
答案
您可以使用猫鼬schema method。让我们看看如何。
用户架构:
const userSchema = new Schema({
firstName: { type: String, required: true, maxlength: 15 },
lastName: { type: String, required: true, maxlength: 15 },
rank: Number
});
const User = mongoose.model('User', userSchema);
分数模式:
const scoreSchema = new Schema({
userId: ObjectId,
quizId: ObjectId,
marks: Number,
answers: [{ type: Object }],
});
// Add post save method on this schema
scoreSchema.post('save', function (doc) {
console.log('this fired after a document was saved');
// doc.userId is you user for this score so
// rank:calculated_rank you formula here
User.updateOne({_id:doc.userId} , {rank:calculated_rank})
});
// model
const Score = mongoose.model('Score', scoreSchema);
因此,每当您调用分数模式上的保存时,就会触发post('save'),并且您可以在此函数中更新userSchema。
以上是关于MongoDB:基于另一个集合更新一个集合的主要内容,如果未能解决你的问题,请参考以下文章
使用spring boot将大量数据从一个集合复制到Mongodb中的另一个集合
在通过流星的发布方法提供数据之前从另一个 mongodb 集合中添加信息