sql >> Database teknologi >  >> NoSQL >> MongoDB

simpelt afstemningssystem med MongoDB

Når du ville gøre det på den måde, ville du ikke spore, hvilken bruger der allerede har stemt, så brugerne kan stemme flere gange. Det er bestemt ikke i din interesse.

Af den grund vil jeg tilføje en række "stemmer" til hver artikel, som inkluderer et objekt for hver stemme, som entydigt identificerer den bruger, der lavede 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 opretter et unikt indeks over artikel-id'et og votes.voter, har du allerede sikret dig, at ingen kan stemme to gange på en artikel.

Når du bruger en værdi på "-1" for nedstemme og "1" for stemme op, kan du beregne den samlede score for en artikel ved at bruge funktionen $sum aggregeret (det ville også nemt give dig mulighed for at indføre vægtede stemmer senere, når du føler kan lide det).




  1. meteor, mongodb, mellemrumstaster, hvordan viser jeg kun 2 decimaler

  2. Bruger du MongoDB til at gemme uforanderlige data?

  3. Indsæt i mongodb med perl

  4. Hent en værdi fra MongoDB efter dets nøglenavn