sql >> Database >  >> NoSQL >> MongoDB

Wat is een goede MongoDB-documentstructuur voor de meest efficiënte bevraging van gebruikersvolgers/volgers?

Dit is een klassiek probleem met volgers en er is geen antwoord op.. Bekijk deze link:

mongo db ontwerp van volgen en feeds, waar moet ik embedden?

Eigenlijk leent deze situatie zich heel goed voor een relationeel schema, als MongoDB en SQL-server de enige keuzes waren die je had. Maar dit is een speciaal soort relationeel probleem waarbij je een tweerichtingsrelatie hebt. Dit kan misschien beter worden afgehandeld door een grafische database:

http://forum.kohanaframework.org/discussion/10130/followers-and-following-database-design-like-twitter/p1

Het punt is dat je volgers of volgers in een gebruikersdocument kunt houden, maar niet beide, om dubbele verwijderingsproblemen te voorkomen. Dus als je je aan MongoDB moet houden, kan een uitweg zijn..(ervan uitgaande dat mensen niemand dat volgen/niet meer volgen vaak),

Houd alleen de volgers in het document, want als ik mijn profiel bekijk, ben ik geïnteresseerd in de mensen die ik volg.. (daarom volgde ik ze in de eerste plaats, toch?)..En doe dan een zoekopdracht als:

db.Users.find({ user_id : { $in : followees })

Hierdoor weet u wie mij allemaal volgen (zeg dat mijn id 'user_id' is).

Een andere reden waarom ik niet het omgekeerde voorstel, is dat.. men mag maximaal 30-40 mensen volgen, dus een gebruikersdocument dat 30-40 volgers opslaat, zou in orde moeten zijn, in tegenstelling tot een gebruikersdocument dat duizenden volgers opslaat! Met de followee-in-document-benadering krijgt u overal gebruikersdocumenten van ongeveer gelijke grootte. In de follower-in-document-benadering heeft u enkele zeer kleine maar ook zeer omvangrijke documenten. En afhankelijk van de hoeveelheid volgergegevens die je invoert (indien aanwezig, behalve volger_id), misschien voorzichtig wilt zijn met de limiet voor de documentgrootte.



  1. MongoDb uitleg mislukt:onbekende operator op het hoogste niveau:$query

  2. Zoek in MongoDB in een array en sorteer op aantal overeenkomsten

  3. Hoe converteer ik een BasicDBObject naar een Mongo Document met de Java Mongo DB driver versie 3?

  4. Hoe kan ik gegevens naar Mongodb importeren vanuit het Json-bestand met behulp van java