sql >> Databasteknik >  >> NoSQL >> MongoDB

MongoDB-relationer för objekt

Det beror på.

Det beror på hur många av var och en av dessa typer av objekt du förväntar dig att ha. Kan du passa dem alla i ett enda MongoDB-dokument för en given användare? Förmodligen inte.

Det beror på relationerna - är användarkonto en en-till-många- eller en många-till-många-relation? Om det är ett till många och antalet konton är litet kan du välja att placera dem i en IList på ett användardokument.

Du kan fortfarande modellera relationer i MongoDB med separata samlingar MEN det finns inga joins i databasen så du måste göra det i kod. Att ladda en användare och sedan ladda deras konton kan vara bra ur ett prestandaperspektiv.

Du kan indexera I arrayer på dokument. Tänk inte på att ett index bara är ett index på ett enkelt fält i ett dokument (som SQL). Du kan använda till exempel en taggsamling på ett dokument och indexera till taggarna. (Se http://www.mongodb.org/display/DOCS/Index #Index-Arrays )

När du hämtar eller skriver data kan du göra en delläsning och en delskrivning av vilket dokument som helst. (se http://www.mongodb.org/display /DOCS/Hämtar+en+deluppsättning+fält )

Och slutligen, när du inte kan se hur du får det du vill ha med hjälp av samlingar och index, kanske du kan uppnå det med hjälp av kartreducering. För att till exempel hitta alla taggar som används sorterade efter hur ofta de används skulle du karta varje dokument avger taggarna som används i det, och sedan skulle du minska den uppsättningen för att få det resultat du vill ha. Du kan sedan lagra resultatet av kartan permanent och bara uppdatera den när du behöver.

En annan fråga:Du nämner att beräkna totalsummor efter tagg. Om du vill ha konsistens i redovisningskvalitet, kanske MongoDB inte är rätt val för dig. "Eventual-consistency" är namnet på spelet för NoSQL-databutiker och de passar i allmänhet inte bra för finansiella transaktioner. Det spelar till exempel ingen roll om en användare ser ett blogginlägg med 3 kommentarer medan en annan ser 4 eftersom de träffar olika kopior som inte är synkroniserade än, men för en finansiell rapport spelar den typen av konsekvens - din rapporten kanske inte stämmer!




  1. Hur man matchar en sträng som består av specialtecken som bindestreck och mellanslag

  2. Hitta distinkta rader i omfattning med mongoid

  3. Mongoose async/wait find sedan redigera och spara?

  4. Hur installerar man mongodb-clients senaste version på Ubuntu?