2012-12-10 34 views
10

Anahtar kelimeleri puanlayan küçük bir uygulama yazıyorum. Yani "beirut" ve "eğitim" girilirse, daha önce görülmemişlerse, bir mongo girişi oluşturmak ve onlara 1 puan vermek istiyorum. Eğer sahiplerse, puanlarını birer birer arttırmak istiyorum . Bunu bir güncelleme komutuyla yapmaya çalışıyorum, ama bence yanlış yapıyor olabilirim.Node.js MongoDB Upsert güncelleştirmesi

  • değil artışla yeni bir marka yeni bir belge oluşturabilir kelime
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 {

nesne veritabanını

  • "anahtar" temsil edilir Sıralaması?

  • cevap

    18

    Genel yaklaşımınız doğru, ancak hata mesajının da belirttiği gibi, kodunuzda bir sözdizimi sorunu var.

    yerine bu deneyin:

    bir Upsert o seçiciden alanlarını birleştiren yeni bir nesne (ilk parametre) ve güncelleme nesne (ikinci parametre) oluşturması gerekir
    rankingdb.update(
        {keyword: key}, 
        {$inc: {score: 1}}, 
        {upsert: true, safe: false}, 
        function(err,data){ 
         if (err){ 
          console.log(err); 
         }else{ 
          console.log("score succeded"); 
         } 
        } 
    ); 
    

    nesneyi oluştururken size böylece don Her ikisinde de keyword alanını içermesi gerekir.

    update()'un 2.0 sürücüsünde kullanımdan kaldırıldığını unutmayın, böylece updateOne() veya updateMany()'u kullanmalısınız.

    +0

    WONDERFUL! char gibi çalıştı. Bu kullanışlı! – mradfo21

    İlgili konular