Node.js Mongoose:如何用一组子文档(一个唯一字段)构造模式?
我正在尝试使以下模式正常工作:Node.js Mongoose:如何用一组子文档(一个唯一字段)构造模式?,node.js,mongoose,upsert,Node.js,Mongoose,Upsert,我正在尝试使以下模式正常工作: var FormSchema = new mongoose.Schema({ form_code: { type: String, unique: true }, ... }); var UserSchema = new mongoose.Schema({ ... submissions: [{ form_code: { type: String, unique: true }, last_updat
var FormSchema = new mongoose.Schema({
form_code: { type: String, unique: true },
...
});
var UserSchema = new mongoose.Schema({
...
submissions: [{
form_code: { type: String, unique: true },
last_update: Date,
questions: [{
question_code: String,
answers: [Number]
}]
}],
});
这里的基本原理是,用户可以提交许多独特的表单,但只应保存每个独特表单的最后一次提交。因此,理想情况下,通过在更新用户时推送提交子文档,模式将要么将提交对象添加到集合中,要么更新包含该表单代码的子文档
以下代码无法按预期工作,即使表单_代码已经存在,也会推送新的子文档:
User.findOneAndUpdate(
{ _id: user.id },
{ $addToSet: { submissions: submission_object } },
function (err, user) {
// will eventually have duplicates of form_code at user.submissions
}
);
上面的模式显然不起作用,必须改变什么才能达到这个目的