2016-05-12 28 views
1

所以我有一個通過MEAN Stack運行的單頁應用程序。我有一個Klausur的計劃/模型(Klausur是德語考試,我想管理考試)。將數據推送到MongoDB,無需編輯MEAN中的全部條目

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」,即我想將信息推送到一個數組而不覆蓋整個數據庫條目!

在此先感謝!

回答

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 
       }] 
      }] 
     } 
); 

使用貓鼬

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

你也可以使用$推而不是$ addToSet。但$ addToSet處理重複插入問題。還有一件事,如果你想添加單個學生對象,然後只使用上面的查詢沒有$每個。例如

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

將要更新的對象傳遞給本機mongoDB更新查詢。

僞查詢將是, db.model.update(selector,objectToUpsert);

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

首先找到Klausur =考試說

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

我認爲你不需要找到然後推動保存學生數組中的新記錄。你可以使用一個更新查詢來處理這個問題https://docs.mongodb.com/manual/reference/operator/update/addToSet/ –