2017-01-12 1 views
0

Ich habe eine Sammlung in folgendem Format:Wie Elemente eines Array von Feld in Mongodb hinzufügen?

{ 
    "_id" : ObjectId("5877540712b0de70db15f3e2"), 
    "student_name" : "neel", 
    "roll_no" : 1, 
    "marks" : [ 
     { 
      "subject1" : 44, 
      "subject2" : 99, 
      "subject3" : 67, 
      "subject4" : 43 
     } 
    ] 
} 

Ich brauche eine JavaScript-Funktion mit dem Parameter erstellen roll_no den Prozentsatz eines Studenten zu finden.

Hinweis: $add funktioniert nicht mit Arrays.

Meine Funktionen ist:

function findpercentage(no) { 
    db.marks1.aggregate({ 
     $match: { 
     "roll_no": no 
     } 
    }, { 
     $project: { 
     "student_name": 1, 
     "total": { 
      $divide: [$add: ["$marks.subject1", "$marks.subje‌​ct2", "$marks.subject‌​3", "$marks.subject4"‌​], 4] 
     } 
     }); 
    } 
+0

Was ist Ihre erwartete Ausgabe? –

Antwort

0

schließlich ich eine Lösung erhielt, obwohl $ entspannen funktioniert nicht.

function findpercentage1(no) { 
    db.marks1.aggregate([ 
    { $match:{roll_no:no}}, 
    { $project: { 
     "student_name": 1, 
     percentage: { 
      $divide:[ 
       {$add: [ { $arrayElemAt: [ "$marks", 0 ] }, 
      { $arrayElemAt: [ "$marks", 1 ] }, 
      { $arrayElemAt: [ "$marks", 2 ] }, 
      { $arrayElemAt: [ "$marks", 3 ] } 
       ] }, 
       4 
      ] 
     } 
     } 
    } 

    ]).forEach(function(pnt) 
{ 
print(pnt.percentage); 
}) 
} 
+0

Wenn Ihre aktuelle Lösung funktioniert, dann haben Sie absolut ungültige formatierte Daten in Ihrer Frage @Neel –

+0

Sorry, ich habe vergessen zu erwähnen, dass ich das Format geändert. – Neel

Verwandte Themen