sql >> Databasteknik >  >> NoSQL >> MongoDB

Hur konverterar man många-till-många relation från SQL till mongoDB-samling?

Jag ser flera lösningar på ditt problem:

Uppdateringar sällan

För att undvika anslutningar, som måste göras på klientsidan i NoSQL-databaser, lägg allt i en samling. Om du inte uppdaterar så ofta kan du göra det

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

Detta resulterar i dubbla data, men om prestanda (inga kopplingar) kommer före minneseffektivitet är det förmodligen en lämplig lösning för dig. Eftersom data lagras flera gånger är uppdateringar mer krävande för servern. d.v.s. att uppdatera e-postadressen skulle se ut

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

Eftersom du inte behöver konto-ID och enhets-ID för att gå med längre, kan du även släppa dessa två fält.

Täta uppdateringar

När du har frekventa uppdateringar, istället för att bädda in, kan du använda referenser. Jag tror att du måste lösa dem på klientsidan. Du har då tre samlingar:

Konto:

{
  _id,
  UserName,
  Email
}

Enhet:

{
  _id,
  DeviceCode
}

Association:

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

Du har ingen dubblering på det här sättet, men du måste hantera referenser.




  1. JSON Datum Förklaring

  2. hur man konverterar array till objekt i MongoDB

  3. Vad kommer att hända om avkoppling appliceras på ett fält som inte finns när man använder aggregering i mangust

  4. Anpassade användaranslutningssträngar för MongoDB-instanser med autentisering