所以我有一个通过MEAN Stack运行的单页面应用程序。我有一个Klausur的以下方案/模型(Klausur是德语考试,我想管理考试)。
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
}]
}
);
多个用户可以编辑任务,否则我只会覆盖该条目。我希望有一个由“studenten”(学生)组成的表,是否可以将一个学生推到我的“studenten”而无需PUTTING(编辑)整个“Klausur”,即我想将信息推送到数组而不会覆盖整个数据库条目!
提前致谢!
答案 0 :(得分:2)
请检查Docs
如果要插入新学生数组。你可以使用下面提到的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处理重复插入问题。还有一件事,如果你想添加单个学生对象,那么只需使用上面的查询而不需要$ each。例如
db.klausur.update(
{ name: "David" },
$addToSet: {
studenten: {
matrnr: 123,
vorname: "ABC",
nachname: "XYZ",
bewertung: [{
punkte: 123
}]
}
}
);
答案 1 :(得分:1)
将要更新的对象传递给本机mongoDB更新查询。
伪查询将是, db.model.update(selector,objectToUpsert);
db.student.update(
{ name: "David" },
{
name: "Will",
marks: 75,
grade: A
},
{ upsert: true }
)
答案 2 :(得分:1)
首先找Klausur =考试说
Klausur.findOne({_id:sample_id}).exec(function (error, closure){
closure.students.push(newstudentobject);
closure.save();
})