2017-10-04 10 views
0

私はこのマングースのスキーマを持っています試みた:db.gamedatas.findOneAndUpdate({game: 1}, {$set: { 'players.$.wordPercentage': (('players.$.totalWords'/totalGameWords) * 100 } });totalGameWordsはローカル変数です。MongoDBのクエリ配列の位置演算子の奇妙な行動

しかし、私はこのエラーを取得しています:The positional operator did not find the match needed from the query. Unexpanded update: players.$.wordPercentage

私は疲れ代わりplayers.$[].wordPercentageを使用しますが、私はその後、別のエラーを取得:魔法のようplayers.1.wordPercentage作品を使用してcannot use the part (players of players.$[].wordPercentage)

を、私は悲しいことにした後、午前ものではないthatsの。

答えて

0

はこれを試してください:約束より

schema.findOne({game : 1}) 
      .exec() 
      .then(doc => { 
       doc.players.forEach((player,i,players)=>{ 
        players[i].wordPercentage = (players[i].totalWords/players[i].totalGameWords) * 100 
       }) 
       doc.save(); 
       return doc; 
      }) 
      .catch(err=>{ 
       console.log(err) 
      }) 
+0

美しい、私は常に使用コールバックを、私は彼らが優れているかを確認、ありがとう! – MrSandman

+0

あなたも大丈夫です:) –

+0

私は自分のニーズに合わせて小さな変更を加え、schema.findを 'schema.findOne'に変更し、' totalWords'を自分のローカル変数に変更しました。 、もう一度、ありがとう! :) – MrSandman

関連する問題