MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Come convertire la relazione molti-a-molti da SQL a mongoDB?

Vedo più soluzioni per il tuo problema:

Aggiornamenti rari

Per evitare i join, che devono essere eseguiti lato client nei database NoSQL, metti tutto in un'unica raccolta. Se non aggiorni molto spesso, potresti farlo

{
   _id,
   LastAccessDate,
   HasException,
   Account : {
        AccountID,
        UserName,
        Email },
   Device : {
        DeviceID,
        DeviceCode }
}

Ciò si traduce in dati duplicati, ma se le prestazioni (nessun join) vengono prima dell'efficienza della memoria, probabilmente è una soluzione adatta per te. Poiché i dati vengono archiviati più volte, gli aggiornamenti sono più impegnativi per il server. Cioè. l'aggiornamento dell'indirizzo e-mail sarebbe simile a

db.myColl.update({"Account.UserName" : "User ToUpdate"}, {"$set" : {"Account.Email" : "[email protected]"} });

Poiché non hai più bisogno di AccountID e DeviceID per partecipare, puoi anche eliminare questi due campi.

Aggiornamenti frequenti

Quando hai aggiornamenti frequenti, invece di incorporare, puoi usare Riferimenti. Penso che tu debba risolverli lato client. Hai quindi tre raccolte:

Account:

{
  _id,
  UserName,
  Email
}

Dispositivo:

{
  _id,
  DeviceCode
}

Associazione:

{
  _id,
  account : {
        "$ref" : "Account",
        "$id" : ... }
  device : {
        "$ref" : "Device",
        "$id" : ... }
}

Non hai duplicazioni in questo modo, ma devi gestire i riferimenti.