Ketika Anda melakukannya dengan cara itu, Anda tidak akan melacak pengguna mana yang telah memilih, sehingga pengguna dapat memilih beberapa kali. Itu pasti bukan minat Anda.
Untuk alasan itu saya akan menambahkan larik "suara" ke setiap artikel yang menyertakan objek untuk setiap suara yang secara unik mengidentifikasi pengguna yang membuatnya:
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 }
]
Saat Anda membuat indeks unik di atas ID artikel dan vote.voter, Anda telah memastikan bahwa tidak seorang pun dapat memilih dua kali untuk sebuah artikel.
Ketika Anda menggunakan nilai "-1" untuk downvote dan "1" untuk upvote, Anda dapat menghitung skor total sebuah artikel dengan menggunakan fungsi agregat $sum (Ini juga akan dengan mudah memungkinkan Anda untuk memasukkan suara berbobot nanti, ketika Anda merasa suka).