如何从node.js更新mongodb文档?

我正在尝试从一个node.js程序更新一个mongoDB中的数组。 我能够从node.js中修改数组,但是我无法获得保存的更改。

http://pastebin.com/j0Mnf7jP

我想我正在做一些非常错误的事情。 援助将不胜感激…

改变这一行:

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

至:

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

这也应该可能包裹一个callback,以捕获错误:

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

我知道现在帮助你已经有点晚了,但也许其他人可以从MongoDB大学的新队列中获益!

db.schools.update应该读取db.students.update

@ tymeJV的答案给了rest:

  • 将大括号内的$set{$set:{scores:zz}}
  • 添加一个callback函数来捕获错误:

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

有趣的是,我现在正在做同样的任务! 我有一个不同的问题,通过阅读文档回答,但是我在Google上search时看到了这个问题。 希望我帮助别人!

我认为你应该为解决问题做下面的代码

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

然后使用以下查询更新您的集合

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

欲了解更多信息,你可以参考这里