sql >> Databasteknik >  >> NoSQL >> MongoDB

Vad är en bra MongoDB-dokumentstruktur för effektivast sökning av användare som följer/följer?

Detta är ett klassiskt problem för följare och följare och det finns inget svar på det.. Kolla in den här länken:

mongo db design av följande och flöden, var ska jag bädda in?

Faktiskt lämpar sig denna situation mycket väl för ett relationsschema, om MongoDB och SQL-server var de enda valen du hade. Men detta är en speciell typ av relationsproblem där du har en tvåvägsrelation. Detta kan kanske hanteras bättre av en grafdatabas:

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

Saken är att du antingen kan behålla följare eller följare i ett användardokument, men inte båda, för att undvika problem med dubbel radering. Så om du måste hålla dig till MongoDB kan en utväg vara ..(förutsatt att folk inte följer/slutar följa någon som ofta),

Behåll bara följarna i dokumentet, för när jag tittar på min profil skulle jag vara intresserad av personerna jag följer.. (det är anledningen till att jag följde dem från början, eller hur?)..Och gör sedan en fråga som:

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

Detta kommer att berätta vilka alla som följer mig (säg att mitt id är 'user_id').

En annan anledning till att jag inte föreslår tvärtom är att... man kan följa högst 30-40 personer, så användardokument som lagrar 30-40 följare borde vara okej jämfört med ett användardokument som lagrar tusentals följare! Med tillvägagångssättet "följare-i-dokument" får du en ungefär jämn storlek på användardokument hela vägen.. Med "följare-i-dokument"-metoden kommer du att ha några mycket små men några mycket skrymmande dokument också. Och beroende på mängden följare-data du lägger in (om någon, förutom follower_id), kan vill vara försiktig med gränsen för dokumentstorlek.



  1. Anropar en lagrad procedur via PHP i MongoDB

  2. Bestående data från Redis till MongoDB för datalagring

  3. Hur du säkrar dina Open Source-databaser med ClusterControl

  4. Hur konverterar man mongodb ISODate till sträng i mongoDB?