sql >> データベース >  >> NoSQL >> MongoDB

マングースは複数のドキュメントを更新しても何も更新されません

    エラーがどこにあり、なぜデータベースが更新されなかったのかを調べるために数時間費やした後、実際にデータベースが更新されたことがわかりました。問題は、mongoシェルで更新をチェックしていて、nodejs postリクエストで更新した後、更新されたものとしてシェルに表示されなかったことです。ただし、ラベルをconsole.log()すると、更新されました。そこで、問題をさらに調査したところ、問題はmongoシェルではなく、mongooseコマンドの更新の誤った使用法であることがわかりました。コールバック引数がありませんでした。コールバック関数を追加した後、データはすぐにmongoシェルで更新されました。

    したがって、実行する代わりに:

    Label.update({'_id': { $in: post.labelIds }}, {$addToSet: {postIds:req.body.id}}, {multi: true})
    

    コールバックを追加することを忘れてはなりません:

    Label.update({'_id': { $in: post.labelIds }}, {$addToSet: {postIds:req.body.id}}, {multi: true}, function(err, affected) {
       if(err)
          console.log(err)
       else
          console.log(affected)
          // After successful update, redirect here to another page...
    

    または、重複した回答がexec()の実行を示唆している場合:

    Label.update({'_id': { $in: post.labelIds }}, {$addToSet: {postIds:req.body.id}}, {multi: true}).exec()
    



    1. pymongoを使用してMongodbコレクションにバリデーターを追加します

    2. マングースは複数のドキュメントを更新しても何も更新されません

    3. mongoDB:C#ドライバーV2ネストされたコレクションのアイテムを更新する方法

    4. 春のデータを使用してクエリを更新するためのカスタムメソッドMongoRepository