2012-12-10 15 views
10

Piszę małą aplikację, która ocenia słowa kluczowe. Jeśli więc "bejrut" i "wykształcenie" zostaną wprowadzone, jeśli nie były wcześniej widziane, chcę utworzyć pozycję mongo i przyznać im 1 punkt. Jeśli tak, chcę zwiększyć ich ocenę o jeden. . Próbuję to zrobić za pomocą jednego polecenia aktualizacji, ale myślę, że mógłbym zrobić to źle.Aktualizacja kodu Node.js w MongoDB

  • Ranking jest obiekt reprezentujący bazy danych "klucz"
  • jest kluczowe
rankingdb.update(
    {keyword:key}, 
    {keyword:key, {$inc:{score:1}}}, 
    {upsert:true, safe:false}, 
    function(err, data) { 
     if (err) { 
      console.log(err); 
     } 
     else { 
      console.log("score succeeded"); 
     } 
    } 
); 

SyntaxError: Unexpected token {

Nie możesz utworzyć nowy dokument z przyrostem?

Odpowiedz

18

Twoje ogólne podejście jest słuszne, ale jak sugeruje komunikat o błędzie, masz problem z składnią w kodzie.

Spróbuj to zamiast:

rankingdb.update(
    {keyword: key}, 
    {$inc: {score: 1}}, 
    {upsert: true, safe: false}, 
    function(err,data){ 
     if (err){ 
      console.log(err); 
     }else{ 
      console.log("score succeded"); 
     } 
    } 
); 

Gdy upsert musi utworzyć nowy obiekt łączy pola z selektora (pierwszy parametr) oraz obiekt aktualizacji (drugi parametr) podczas tworzenia obiektu, więc don w obu musi być zawarte pole keyword.

Zauważ, że update() jest przestarzałe w sterowniku 2.0, więc należy teraz użyć updateOne() lub updateMany().

+0

WSPANIAŁA! pracował jak char. To jest przydatne! – mradfo21

Powiązane problemy