sql >> Databáze >  >> NoSQL >> MongoDB

jednoduchý hlasovací systém s MongoDB

Když byste to udělali tímto způsobem, nesledovali byste, který uživatel již hlasoval, takže uživatelé mohou hlasovat vícekrát. To jistě není ve vašem zájmu.

Z tohoto důvodu bych ke každému článku přidal pole „hlasů“, které obsahuje objekt pro každé hlasování, který jednoznačně identifikuje uživatele, který jej vytvořil:

votes: [ 
        { voter:"name or ID or IP address or some other unique identifier for the person who voted",
          vote:-1 },
        { voter:"someone else",
          vote:1 },
        { voter:"and someone entirely different",
          vote:-1 }
    ]

Když vytvoříte jedinečný index přes ID článku a votes.voter, máte již zajištěno, že nikdo nemůže pro článek hlasovat dvakrát.

Když použijete hodnotu „-1“ pro hlas proti a „1“ pro hlas, můžete vypočítat celkové skóre článku pomocí agregační funkce $sum (snadno by vám také umožnila zavést vážené hlasy později, až budete mít pocit, že líbí).




  1. Nelze spustit sadu replik v Ubuntu

  2. Používejte MongoEngine a PyMongo společně

  3. jak mohu ověřit heslo uživatelského jména pro autentizaci mongodb prostřednictvím pymongo?

  4. Obrázek vrácený z REST API se vždy zobrazuje jako poškozený