2017-10-04 13 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)

을,하지만 슬프게도 후 나는 무엇을하지 이잖아.

답변

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