Provengo da uno sfondo MySQL
e sto cercando di avvolgere la mia testa attorno allo MongoDB
. In particolare, sto cercando di concettualizzare come dovrei modellare le relazioni n:n
con "Mongo way".Come modellare le relazioni molti-a-molti in MongoDB (per un utente MySQL)
Per questo esempio, supponiamo di avere due collections
: users
e interests
. Dobbiamo essere in grado di rappresentare o eseguire una query per molte cose in nostri dati:
- interessi dell'utente
- Valutazione dell'utente di interesse, ad esempio, "Mi piace" o "antipatia"
- utenti con un determinato interesse
- contatore (che può essere incrementato/decrementato) di ogni valutazione dell'interesse
- nome Interessi
In MySQL
, avrei creato una tabella users_interests
indicizzata su entrambi gli ID utente e ID interesse. Per il contatore, avrei avuto colonne separate per ciascun tipo di rating e ogni volta che un utente ha valutato/non valutato un interesse, ha eseguito una transazione per garantire che i conteggi non fossero mai falsi.
Ho provato reading about some schema designs, ma senza successo.
Puoi aiutare un'anima perduta a trovare la via?
perché memorizzare l'ID? È improbabile che tu rinomini un interesse, ma mantieni i riferimenti, giusto? Inoltre, dovrai eseguire un '$ in' per visualizzare i nomi dei Mi piace. – mnemosyn
@mnemosyn Di solito il percorso del codice prevede uno dei due scenari: 1: hai interesse a vedere quali utenti hanno o 2: vuoi vedere quali interessi ha un utente. Con il primo, hai già il nome e ora stai solo facendo una query su un ID (query più veloce) piuttosto che una stringa. Con il secondo, hai una lista di id che di nuovo stai interrogando sull'ID oggetto. Inoltre, se cambi un nome di interesse non devi refactoring attraverso ogni voce utente per aggiornarlo, in quanto tutto ciò che serve è l'ID di riferimento per quel particolare interesse nella raccolta di interessi. Spero che questo ti aiuti! – Petrogad
@mnemosyn Cosa succede se decido di mettere in maiuscolo l'interesse, da "pesca" a "Pesca" o qualcosa del genere? – ceejayoz