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

Hvordan konverteres mange-til-mange relationsform SQL til mongoDB-indsamling?

Jeg ser flere løsninger på dit problem:

Sjældent opdateringer

For at undgå joins, der skal gøres på klientsiden i NoSQL-databaser, skal du lægge alt i én samling. Hvis du ikke opdaterer ret ofte, kan du gøre det

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

Dette resulterer i duplikerede data, men hvis ydeevne (ingen joins) kommer før hukommelseseffektivitet, er det sandsynligvis en passende løsning for dig. Da dataene gemmes flere gange, er opdateringer mere krævende for serveren. dvs. opdatering af e-mail-adressen ser sådan ud

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

Da du ikke længere behøver AccountID og DeviceID for at deltage, kan du også droppe disse to felter.

Hyppige opdateringer

Når du har hyppige opdateringer, i stedet for at integrere, kan du bruge Referencer. Jeg tror, ​​du skal løse dem på klientsiden. Du har så tre samlinger:

Konto:

{
  _id,
  UserName,
  Email
}

Enhed:

{
  _id,
  DeviceCode
}

Forening:

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

Du har ingen duplikering på denne måde, men du er nødt til at håndtere referencer.




  1. MongoDB Schema Design (indlejret array vs separat samling)

  2. Post et billede ved hjælp af binær data og andre data

  3. Mongoose model Skema med reference array:CastError:Cast to ObjectId mislykkedes for værdi [object Object]

  4. Dechifrere en fejl ved at oprette forbindelse til en mongo-instans, der hostes på <project>.meteor.com