Mysql
 sql >> Database >  >> RDS >> Mysql

Come modellare relazioni molti-a-molti in MongoDB (per un utente MySQL)

Ottima domanda. Per prima cosa vorrei illustrare un po' come funziona la relazione N:N, quindi entrerò nei dettagli su ciascuno dei tuoi punti elenco.

N:N in MySQL normalmente hai la tua tabella pivot associata tra il tuo utente e gli interessi (tabella user_interests). In mongo lo fai in modo leggermente diverso. Hai ancora una raccolta di utenti e interessi, tuttavia ora memorizzi un elenco di chiavi sotto interessi per un utente. Quindi qualcosa del genere:

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

Memorizzando i tuoi interessi in un elenco che è inserito nella tabella degli interessi, puoi eseguire ciascuna delle azioni richieste. Se si desidera eseguire una query, la faresti in base all'ID che si trova nella tabella degli interessi, quindi eseguire una query utilizzando $in modificatore .

Ora per la tua raccolta di interessi, farei quanto segue:

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

Quando si aggiunge un interesse a un documento utente, la variabile di conteggio dipenderà quindi dalla definizione delle valutazioni. Se stai memorizzando le tue valutazioni in un'area separata (o in una logica), il valore che hai assegnato loro sarebbe quello che ti riferisci quindi al valore int nell'interesse. IE:L'utente lo valuta meh (che ha un valore di 1), quindi aggiungeresti 1 al valore del conteggio.

Si spera che questo sia utile e abbia almeno portato ad altre idee su come strutturarlo!

In bocca al lupo, ricorda che MONGO È FANTASTICO.