2016-06-01 7 views
0

現在、私が送信しているデータの更新と設定/保存に使用している電子メールの配列を繰り返し処理するforEachループを使用しています投稿要求を介してfor eachループを使用してMongoDBのデータを配列内の要素に保存する

これは私の現在のコードです:

app.post('/register/register', function(req, res){ 

var emails = ['[email protected]', '[email protected]', '[email protected]'] 

    emails.forEach(function(element){ 
    User.update(
    {email: element}, {$set: {team: req.body}} 
    , function(err, user){ 
    }) 
    }) 
    res.sendStatus(200); 
}) 

このコードは動作しますが、私は助けるが、それは本当に下手に書かれていることを感じることができません。 mongoDBには配列の電子メールのすべての文書を見つけることができますが、各項目をループして保存するのではなく、データを一度にすべて更新できますか?

ありがとうございます。

+0

オーバーヘッドを減らすために、呼び出しは単一の更新呼び出しでなければなりません。 mongoDB側で配列を処理してください。私は通常、配列に単一項目を入れて、DBが型をチェックする必要がないようにします – softwarenewbie7331

答えて

1

確かに、あなたはこれを行うことができます。オペレータで

app.post('/register/register', function(req, res){ 

var emails = ['[email protected]', '[email protected]', '[email protected]'] 

    User.update(
    {email: {$in: emails}}, {$set: {team: req.body}} 
    , function(err, user){ 
    }) 
    res.sendStatus(200); 
}) 

$はあなたの配列内の電子メールを持つすべてのユーザーに一致します。

関連する問題