将数据推送到MongoDB,而不需要编辑MEAN中的整个条目

所以我有一个单一的页面应用程序通过MEAN堆栈运行。 我有一个Klausur的计划/模型(Klausur是德语考试,我想pipe理考试)。

var KlausurSchema = new Schema( { name: String, semester: String, krankmeldungen: [Number], aufgaben: [{ name: String, punkte: Number }], studenten: [{ matrnr: Number, vorname: String, nachname: String, bewertung: [{ punkte: Number }], pversuch: String, pvermerk: String, freiverm: String, labnr: Number, porgnr: Number, aenddat: String }] } ); 

多个用户可以编辑entrys,否则我只会覆盖条目。 我想要一张由“学生”组成的桌子,是否可以把一个学生推到我的“学生”,而不需要对整个“Klausur”进行PUTTING(编辑),也就是说,我想把信息推送到一个数组而不覆盖整个数据库条目!

提前致谢!

请检查文档

如果你想插入新的学生数组。 你可以使用下面提到的MongoDB查询。

使用MongoDB

  db.klausur.update( { name: "David" }, $addToSet: { studenten: { $each: [ { matrnr: 123, vorname: "ABC", nachname: "XYZ", bewertung: [{ punkte: 123 }] }, { matrnr: 124, vorname: "ABCD", nachname: "XYZA", bewertung: [{ punkte: 1234 }] }] } ); 

使用mongoose

  ModelName.update( { name: "David" }, $addToSet: { studenten: { $each: [ { matrnr: 123, vorname: "ABC", nachname: "XYZ", bewertung: [{ punkte: 123 }] }] } ); 

你也可以使用$ push而不是$ addToSet。 但$ addToSet处理重复的插入问题。 还有一件事,如果你想添加单个学生对象,然后只使用上面的查询没有$每个。 例如

  db.klausur.update( { name: "David" }, $addToSet: { studenten: { matrnr: 123, vorname: "ABC", nachname: "XYZ", bewertung: [{ punkte: 123 }] } } ); 

将要更新的对象传递给本机mongoDB更新查询。

伪查询将是, db.model.update(selector,objectToUpsert);

 db.student.update( { name: "David" }, { name: "Will", marks: 75, grade: A }, { upsert: true } ) 

首先findKlausur =考试说

  Klausur.findOne({_id:sample_id}).exec(function (error, closure){ closure.students.push(newstudentobject); closure.save(); })