2016-05-17 17 views
6

findOneAndUpdateメソッドが正しく動作しません。一度にすべてのフィールドを更新しようとしていますが、最後のフィールドを更新(設定)しています。それは常に最後のフィールドだけです。誰かが私が間違ってやっていることや、期待される効果を得るために何ができるか教えてもらえますか?Mongoose findOneAndUpdate複数のフィールドの更新

これは私のfindOneAndUpdateコードです:あなたは$setオペレーターを複数回使用している

Book.findOneAndUpdate({_id:bookId},{$set:{"name": name},$set:{"genre": genre},$set:{"author": author},$set:{"similar": similar}}).exec(function(err, book){ 
     if(err){ 
      console.log(err); 
      res.status(500).send(err); 
     } else { 
      res.status(200).send(book); 
     } 
}); 

答えて

16

$setの正しい構文は次のとおりです。あなたがしたい場合は$設定と$同じfindByIdAndUpdateフィールドに押し込む何

Book.findOneAndUpdate({ "_id": bookId }, { "$set": { "name": name, "genre": genre, "author": author, "similar": similar}}).exec(function(err, book){ 
    if(err) { 
     console.log(err); 
     res.status(500).send(err); 
    } else { 
      res.status(200).send(book); 
    } 
}); 
+0

:あなたはこのようなあなたの更新引数を変更する

{ $set: { <field1>: <value1>, ... } } 

必要がありますか?構文はどのように見えるでしょうか? –

+2

@ 55Cancriあなたが必要とするのは、「更新」引数に '$ push:{、..} 'を追加することです:{$ set:{、...}、$ push:{、..}} ' – styvane

関連する問題