sql >> Database >  >> RDS >> Mysql

Veel-op-veel relaties in MongoDB modelleren (voor een MySQL-gebruiker)

Grote vraag. Laat me eerst een beetje schetsen van hoe de N:N-relatie werkt, dan zal ik in detail ingaan op elk van uw opsommingstekens.

N:N in MySQL heeft u normaal gesproken uw draaitabel die associeert tussen uw gebruiker en interesses (tabel user_interests). In mongo doe je dit een beetje anders. U hebt nog steeds een verzameling gebruikers en interesses, maar in plaats daarvan slaat u nu een lijst met sleutels op onder interesses voor een gebruiker. DUS zoiets als dit:

User Collection {
      "name":"Josh",
      "user":"jsmith",
      "interests":[
           {
            "_id":12345,
            "rating":"like"
           },
           {..}..
      ]
}

Door uw interesses op te slaan in een lijst die is ingetoetst op uw interessetabel, kunt u alle gewenste acties uitvoeren. Als je een zoekopdracht zou willen doen, zou je deze op basis van de ID in de interessetabel doen, voer dan een zoekopdracht uit met behulp van de $in modifier .

Nu zou ik voor het verzamelen van uw interesses het volgende doen:

User Interest {
      "_id":objectId
      "label":"Swimming",
      "count":intValue
}

Bij het toevoegen van een interesse aan een gebruikersdocument, is de count-variabele dan afhankelijk van de definitie van uw beoordelingen. Als u uw beoordelingen opslaat in een apart gebied (of in logica), dan is de waarde die u eraan toekent wat u dan relateert aan de int-waarde in interesse. IE:Gebruiker beoordeelt het meh (wat een waarde heeft van 1), dan zou je 1 toevoegen aan de telwaarde.

Hopelijk is dit nuttig en heeft het op zijn minst andere ideeën opgeleverd over hoe het te structureren!

Veel succes, onthoud dat MONGO GEWELDIG IS.



  1. Tomcat JDBC MySQL ClassNotFoundException

  2. Wat is de beste manier om resultaten te pagineren in SQL Server?

  3. JDBC-stuurprogramma voor Oracle 10G XE

  4. Waarom wordt casten van float naar varchar afgerond in SQL Server?