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

时间:2013-09-02 03:35:41

标签: node.js mongodb

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

http://pastebin.com/j0Mnf7jP

我认为我做错了。 将不胜感激......

4 个答案:

答案 0 :(得分:10)

更改此行:

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

要:

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

这也应该包含一个回调函数来捕获错误:

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

答案 1 :(得分:4)

我知道现在帮助你的时间有点晚了,但也许其他人可以在新群组通过MongoDB大学时受益!

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

@ tymeJV的答案给出了其余的答案:

  • $set括起来:{$set:{scores:zz}}
  • 添加回调函数以捕获错误:

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

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

答案 2 :(得分:0)

我认为您应该使用以下代码来解决问题

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

有关详细信息,请参阅here

答案 3 :(得分:0)

var dbName = 'school'
var tableName = 'classA'
MongoClient.connect(dbName, function(err, db) {
  if (err)
  {
    console.log(err);
  }
  else {

    var collection = db.collection(tableName)
    collection.update({_id:doc._id}, {$set:{scores:zz}}, function(err, result) {
      if (err)
      {
        console.log(err);

      }
      else{
        console.log(result);
      }
    });
  }
});