sql >> Databasteknik >  >> RDS >> Mysql

Hur man modellerar många-till-många-relationer i MongoDB (för en MySQL-användare)

Bra fråga. Låt mig först beskriva lite av hur N:N-relationen fungerar och sedan ska jag gå in i detalj på var och en av dina punktpunkter.

N:N i MySQL har du normalt din pivottabell associerad mellan din användare och intressen (tabellen user_interests). I mongo gör man det här lite annorlunda. Du har fortfarande en användare och intressesamling, men istället lagrar du nu en lista med nycklar under intressen för en användare. SÅ något sånt här:

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

Genom att lagra dina intressen i en lista som är avstängd på din intressetabell kan du utföra var och en av de åtgärder du behöver. Om du ville göra en fråga skulle du göra en sökning baserat på ID:t som finns i intressetabellen och sedan göra en fråga med $in modifierare .

Nu för din intresseinsamling skulle jag göra följande:

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

När du lägger till ett intresse i ett användardokument beror räknevariabeln på definitionen av dina betyg. Om du lagrar dina betyg i ett separat område (eller i logik), så skulle värdet du tilldelade dem vara det du relaterar till int-värdet i intresse. IE:Användaren betygsätter det meh (som har ett värde på 1) och sedan skulle du lägga till 1 till räknevärdet.

Förhoppningsvis är detta till hjälp och har åtminstone lett till några andra idéer om hur man strukturerar det!

Lycka till, kom ihåg att MONGO ÄR AWESOME.



  1. Hur får jag det senast infogade ID:t för en MySQL-tabell i PHP?

  2. Hur man får tag på Amazon MySQL RDS-certifikat

  3. postgresql, kunde inte identifiera kolumn i postdatatypen

  4. Hur man ändrar tabelllagringsmotor från MyISAM till InnoDB