MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

prosty system głosowania z MongoDB

Gdy zrobisz to w ten sposób, nie będziesz śledzić, który użytkownik już głosował, więc użytkownicy mogą głosować wiele razy. To z pewnością nie leży w twoim interesie.

Z tego powodu dodałbym tablicę "głosów" do każdego artykułu, która zawiera obiekt dla każdego głosu, który jednoznacznie identyfikuje użytkownika, który go wykonał:

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 }
    ]

Tworząc unikalny indeks nad identyfikatorem artykułu i vote.voter, masz już pewność, że nikt nie będzie mógł dwukrotnie głosować na artykuł.

Kiedy użyjesz wartości "-1" dla downvote i "1" dla upvote, możesz obliczyć całkowity wynik artykułu za pomocą funkcji agregującej $sum (umożliwiłoby to również późniejsze wprowadzenie głosów ważonych, gdy czujesz lubię to).




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Jaki jest najlepszy sposób obsługi globalnego połączenia Mongodb w NodeJs?

  2. Nie udało się połączyć Mongoose z Atlasem

  3. W jaki sposób dane w bazie danych MongoDB są przechowywane na dysku?

  4. Struktura agregacji MongoDB $subtract

  5. MongoDB - jak zapytać o zagnieżdżony element w kolekcji?