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í).