12

node.js プログラムから mongoDB の配列を更新しようとしています。node.js 内から配列を変更することはできますが、変更を保存することはできません。

http://pastebin.com/j0Mnf7jP

私は何か非常に間違ったことをしていると思います。助けていただければ幸いです...

4

4 に答える 4

8

今はあなたを助けるのが少し遅れていることを知っていますが、新しいコホートが MongoDB University を通過するにつれて、他の人が恩恵を受ける可能性があります!

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

おかしなことに、私は今、まったく同じ課題をやっています! ドキュメントを読んで答えた別の問題がありましたが、グーグルでこの質問を見ました。私が誰かを助けたことを願っています!

于 2015-06-15T09:31:52.207 に答える
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
); 

詳細については、 こちらを参照してください

于 2013-09-02T09:52:29.000 に答える