sql >> Database >  >> NoSQL >> MongoDB

upvotes/downvotes opslaan in mongodb

MongoDB-documenten zijn momenteel beperkt tot maximaal 16 MB, dus aangenomen dat de berekeningen van Gilbert nauwkeurig zijn, zou u niet alle 6 miljoen user_id kunnen opslaan s in de Post document.

U kunt echter overwegen de stemmen op te slaan in de User document in plaats daarvan (d.w.z. de post_id s waar de specifieke gebruiker op heeft gestemd). Het is veel minder waarschijnlijk dat een gebruiker op 6 miljoen verschillende berichten stemt, dus op deze manier bereik je niet zo snel de maximale grootte.

Een andere manier om dit aan te pakken:als je verwacht dat er veel stemmen op een bepaalde post komen, wil je misschien de stemmen buiten de Post opslaan. documenten in een aparte verzameling en voer een aanvullende query uit, vergelijkbaar met een veel-op-veel JOIN-tabel in SQL-mode:

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

en maak een samengestelde index op (user_id, post_id).



  1. Als mongodb-aggregaat geen indexen gebruikt voor $lookup, waarom nemen mijn prestaties dan toe bij het gebruik van indexen?

  2. Maak op betrouwbare wijze opnieuw verbinding met MongoDB

  3. Sidekiq vindt geen records voor Rails Active Job

  4. Mongomapper-documentatie?