2016-10-27 5 views
0

私はMongoDBで自分のコレクションを更新しようとしています。mongodb update予期しないトークン

[ { _id: 5811cc62a50998a59193d4c0, 
    film: 
    { id: '2', 
     title: 'Pirates of the Caribbean: Dead Men Tell No Tales ', 
     year: '2017', 
     quality: 'HDrip', 
     stars: 'John Depp, Orlando Bloom, Javier Bardem, Kaya Scodelario, Brenton Thwaites', 
     Show: true }, 
    Show: false }, 
    { _id: 5811d693e4d24a0a69e8c12f, 
    film: 
    { id: 5, 
     title: 'Doctor Strange', 
     year: '2016', 
     quality: 'Blu-ray', 
     stars: 'Benedict Cumberbatch, Chiwetel Ejiofor, Rachel McAdams, Benedict Wong, Mads Mikkelsen', 
     Show: true } }, 
    { _id: 5811d9e884efe15a708a8f1d, 
    film: 
    { id: 6, 
     title: 'Hacksaw Ridge', 
     year: '2016', 
     quality: 'DVDrip', 
     stars: 'Teresa Palmer, Andrew Garfield, Vince Vaughn, Hugo Weaving, Sam Worthington', 
     Show: true } } ] 

ここでは、配列のどのオブジェクトでも 'フィルム'の項目 '表示'に行きたいと思います。

私が書いた:

db.wl.update({query: {_id: mongojs.ObjectId(req.body._id)}, 
    update: {$set: {film.$.Show: req.body.newShow}} 
    }) 

をしかし、結果に、私はこの間違いを得る: enter image description here

Erlier私がしようと '0.0'。 '。$'の代わりに。ちょうどドットで。 それでも動作しません。

+0

それは '{$ set:{" film。$。Show ":req.body.newShow}'の間にあります。 – lascort

+0

まだ何も変わらない –

+0

どういう意味ですか?エラーは少なくとも異なるはずです – lascort

答えて

1

まず、クエリが正しいことを確認して、更新するオブジェクトを返します。また、更新は非同期メソッドで、表示したコードからはコールバックを実装していません。

db.wl.update({_id: mongojs.ObjectId(req.body._id)}, 
    {$set: {"film.Show": req.body.newShow}} 
    , function(err, res) { 
     if (err){ 
      console.warn(err.message); 
     }else{ 
      console.log(res); 
      //do something 
     } 
    });) 
+0

申し訳ありませんが、それはすべてのクエリで大丈夫ですが、アイデアのためにありがとう –

1

問題はdb.wl.updateでした。私はそれをどのように解決したのですか?

db.wl.update(
    {_id: mongojs.ObjectId(req.body._id)}, 
    {$set: {"film.Show": req.body.newShow}} 
) 

これですべて正常に動作します。愚かな質問を申し訳ありません。

+0

うわー、これが恋しいです。私は自分の答えを更新するつもりだから、誰もが誤解しないように – andresk

関連する問題