MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Как да преобразувам SQL релация много към много в колекция mongoDB?

Виждам няколко решения за вашия проблем:

Рядко се актуализира

За да избегнете обединения, които трябва да се правят от страна на клиента в NoSQL бази данни, поставете всичко в една колекция. Ако не актуализирате много често, можете да го направите

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

Това води до дублиране на данни, но ако производителността (без присъединяване) е преди ефективността на паметта, това вероятно е подходящо решение за вас. Тъй като данните се съхраняват многократно, актуализациите са по-взискателни за сървъра. т.е. актуализирането на имейл адреса ще изглежда така

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

Тъй като вече не се нуждаете от AccountID и DeviceID, за да се присъедините, можете също да изпуснете тези две полета.

Чести актуализации

Когато имате чести актуализации, вместо вграждане, можете да използвате препратки. Мисля, че трябва да ги разрешите от страна на клиента. След това имате три колекции:

Акаунт:

{
  _id,
  UserName,
  Email
}

Устройство:

{
  _id,
  DeviceCode
}

Асоциация:

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

По този начин няма дублиране, но трябва да се справите с препратките.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. вземете запис с поне един асоцииран обект

  2. MongoDB:Нечувствителни към главни и главни букви и акценти

  3. Тествайте @Transactional с Flapdoodle Embedded MongoDB в Spring Boot

  4. как да получите обяснение на Python Mongo Aggregate с помощта на db.command?

  5. Върнете действителния тип на поле в MongoDB