Ho due tabelle/collezioni; Utenti e gruppi. Un utente può essere membro di un numero qualsiasi di gruppi e un utente può anche essere proprietario di un numero qualsiasi di gruppi. In un database relazionale probabilmente avrei una terza tabella chiamata UserGroups con una colonna UserID, una colonna GroupID e una colonna IsOwner.Come organizzare una relazione molti a molti in MongoDB
sto usando MongoDB e sono sicuro che ci sia un approccio diverso per questo tipo di relazione in un database di documenti. Dovrei incorporare l'elenco di gruppi e gruppi come proprietario all'interno della tabella Utenti come due matrici di ObjectID? Devo anche memorizzare l'elenco di membri e proprietari nella tabella Gruppi come due array, rispecchiando in modo efficace la relazione che causa una duplicazione delle informazioni sulle relazioni?
O è una tabella di bridging UserGroups un concetto legittima nei database di documenti per molti a molti rapporti?
Grazie
Vedere anche le risposte a [questa domanda] (http://stackoverflow.com/questions/2336700/mongodb-many-to-many-association) e [questa domanda] (http://stackoverflow.com/questions/ 5498692/many-to-many-relationships-in-couchdb-or-mongodb) –
So che questo è piuttosto vecchio, ma mi sto chiedendo anche sulla scala.Cosa succede se hai 1000 gruppi? – FarscapePROJ
Ottimo punto - Un'altra opzione, in questo caso, consiste nell'utilizzare l'equivalente di una relazione di giunzione da un database SQL, una raccolta intermedia con due chiavi esterne, una per ogni raccolta correlata. In questo caso, è possibile eseguire 3 query: (1) un normale find() per ottenere i risultati parent, (2) una query IN per ottenere i risultati intermedi e infine (3) una query IN utilizzando le chiavi esterne nel risultati intermedi per trovare i record figlio. (Ecco come implementiamo questa funzionalità in Waterline) – mikermcneil