Het hangt er van af.
Het hangt af van hoeveel van elk van dit soort objecten u verwacht te hebben. Kun je ze allemaal in een enkel MongoDB-document passen voor een bepaalde gebruiker? Waarschijnlijk niet.
Het hangt af van de relaties - is gebruikersaccount een een-op-veel- of een veel-op-veel-relatie? Als het één te veel is en het aantal accounts klein is, kunt u ervoor kiezen om ze in een IList op een gebruikersdocument te plaatsen.
Je kunt nog steeds relaties in MongoDB modelleren met aparte collecties MAAR er zijn geen joins in de database, dus je moet dat in code doen. Het laden van een gebruiker en het laden van hun accounts kan vanuit prestatieperspectief prima zijn.
U kunt INTO-arrays op documenten indexeren. Beschouw een index niet als een index op een eenvoudig veld in een document (zoals SQL). U kunt bijvoorbeeld een Tag-verzameling op een document gebruiken en indexeren in de tags. (Zie http://www.mongodb.org/display/DOCS/Indexes #Indexes-Arrays )
Wanneer u gegevens ophaalt of schrijft, kunt u elk document gedeeltelijk lezen en gedeeltelijk schrijven. (zie http://www.mongodb.org/display /DOCS/Retrieving+a+Subset+of+Fields )
En tot slot, als u niet kunt zien hoe u kunt krijgen wat u wilt met behulp van verzamelingen en indexen, kunt u dit mogelijk bereiken met kaartverkleining. Als u bijvoorbeeld alle tags wilt vinden die momenteel in gebruik zijn, gesorteerd op hun gebruiksfrequentie, moet u in kaart brengen elk document zendt de tags uit die erin worden gebruikt, en dan zou je verminderen die set om het gewenste resultaat te krijgen. U kunt dan het resultaat van die kaartverkleining permanent opslaan en alleen bijwerken wanneer dat nodig is.
Nog een zorg:u noemt het berekenen van totalen per tag. Als u transactieconsistentie van boekhoudkundige kwaliteit wilt, is MongoDB misschien niet de juiste keuze voor u. "Eventuele consistentie" is de naam van het spel voor NoSQL-gegevensopslag en ze zijn over het algemeen niet geschikt voor financiële transacties. Het maakt bijvoorbeeld niet uit of de ene gebruiker een blogpost ziet met 3 reacties terwijl een andere er 4 ziet omdat ze verschillende replica-exemplaren raken die nog niet synchroon lopen, maar voor een financieel rapport is dat soort consistentie wel van belang - uw rapport klopt mogelijk niet!