sql >> Databasteknik >  >> NoSQL >> MongoDB

enkelt röstsystem med MongoDB

När du skulle göra det på det sättet skulle du inte spåra vilken användare som redan har röstat, så användare kan rösta flera gånger. Det ligger säkert inte i ditt intresse.

Av den anledningen skulle jag lägga till en rad "röster" till varje artikel som inkluderar ett objekt för varje röst som unikt identifierar användaren som gjorde den:

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

När du skapar ett unikt index över artikel-ID och votes.voter har du redan sett till att ingen kan rösta två gånger på en artikel.

När du använder värdet "-1" för nedröstning och "1" för uppröstning kan du beräkna totalpoängen för en artikel genom att använda funktionen $summa aggregat (det skulle också lätt göra det möjligt för dig att införa viktade röster senare, när du känner gillar det).




  1. Hämta alla "dokument" från MongoDB "samling"

  2. Rails 3 med MongoDB via mongoid-adapter - finns det något sätt att dela attributspecifikationer utan att använda Single-Table Inheritance?

  3. Spring MongoDB process/tråd läcker

  4. Eclipselink med MongoDB java.lang.ClassCastException