簡體   English   中英

如何從node.js更新mongodb文檔?

[英]how to update a mongodb document from node.js?

我試圖從node.js程序更新mongoDB中的數組。 我能夠從node.js中修改數組,但我無法獲得保存更改。

http://pastebin.com/j0Mnf7jP

我想我做錯了。 協助將不勝感激......

改變這一行:

({_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.
});

我知道現在幫助你有點晚了,但也許其他人可以從新隊列通過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; } ); 

有趣的是,我現在正在做同樣的任務! 我有一個不同的問題,通過閱讀文檔回答,但我在谷歌搜索時看到了這個問題。 希望我能幫助別人!

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

我認為你應該做以下代碼來解決問題

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

有關更多信息,請參閱此處

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM