2013-09-02 11 views

Odpowiedz

8

Zmiana ta linia:

({_id:doc._id},$set:{scores:zz}); 

Do:

({_id:doc._id}, { $set:{scores:zz}}); 

ta powinna również prawdopodobnie owinięte zwrotnego, aby wychwycić błędy:

db.schools.update({_id:doc._id}, {$set:{scores:zz}}, function(err, result) { 
    if (err) 
     //do something. 
}); 
+0

Zrobiłem to ... Ale dostaję ten błąd ... TypeError: Nie można wywołać metody 'update' z undefined – IrishGringo

+0

@IrishGringo - brzmi jak twoje 'db' lub' school' jest niezdefiniowane. – tymeJV

+0

użyj db.collection ("students") zamiast db.schools – refactor

0

Myślę, że powinieneś zrobić następujący kod do rozwiązywania problemów

var lowScore = 9999.9; 
     for (var i=0; i<doc.scores.length; i++) { 
      if (doc.scores[i].type == "homework" 
       && doc.scores[i].score < lowScore) { 
        lowScore = doc.scores[i].score; 
      } 
     } 

a następnie aktualizować swoją kolekcję stosując następujące zapytanie

collection.update({ "_id":doc._id }, 
{ $pull : { "scores" : { 
$and: [ {"type":"homework"}, { "score":lowScore} ] 
} } }, 
{ "safe":true }, 
function(err, result) { 
if (err) { 
console.log(err); 
    } 
} // update callback 
); 

uzyskać więcej informacji można zwrócić here

3

Wiem, że to trochę za późno, aby pomóc wam teraz, ale może inni mogą korzystać jako nowe kohorty przechodzą przez Uniwersytet MongoDB!

db.schools.update powinien przeczytać db.students.update.

@ odpowiedź tymeJV daje resztę:

  • zawinąć $set wewnątrz szelki: {$set:{scores:zz}}
  • dodać funkcję oddzwonienia złapać błędy:

    db.collection('students').update (
        { _id : doc._id }, 
        { $set : { scores:zz } }, 
        function(err, result) { 
         if (err) throw err; 
        } 
    ); 
    

Zabawne, ja W tej chwili robię dokładnie to samo zadanie! Miałem inny problem, na który odpowiedziano, czytając dokumenty, ale widziałem to pytanie podczas googlowania. Mam nadzieję, że pomogłem komuś!

Powiązane problemy