sql >> Databasteknik >  >> NoSQL >> MongoDB

lagra upp-/nedröster i mongodb

MongoDB-dokument är för närvarande begränsade till maximalt 16 MB, så förutsatt att Gilberts beräkningar är korrekta, skulle du inte kunna lagra alla 6 miljoner user_id s i Post dokumentera.

Du kan dock överväga att lagra rösterna i User dokument istället (d.v.s. post_id). som den specifika användaren röstade på). Det är mycket mindre troligt att en användare röstar på 6 miljoner olika inlägg, så på detta sätt når du inte storleksgränsen lika snabbt.

Ett annat sätt att hantera detta:Om du förväntar dig att många röster för ett visst inlägg, kanske du vill lagra rösterna utanför Post dokument i en separat samling och gör en ytterligare fråga, liknande en många-till-många JOIN-tabell på SQL-sätt:

user_votes { user_id: ObjectId(...), post_id: ObjectId(...), vote:-1 }

och skapa ett sammansatt index på (user_id, post_id).



  1. Mongoose aggregat, kan inte dynamiskt lägga till något fält:{ $not; null }

  2. antal $lookup-resultat mongodb

  3. Sidekiq bearbetar inte kö

  4. MongoDB som fillagring