MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Jak przekonwertować relację wiele-do-wielu z SQL na kolekcję mongoDB?

Widzę wiele rozwiązań Twojego problemu:

Rzadkie aktualizacje

Aby uniknąć złączeń, które muszą być wykonywane po stronie klienta w bazach danych NoSQL, umieść wszystko w jednej kolekcji. Jeśli nie aktualizujesz zbyt często, możesz to zrobić

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

Powoduje to zduplikowane dane, ale jeśli wydajność (brak łączeń) jest ważniejsza niż wydajność pamięci, jest to prawdopodobnie odpowiednie rozwiązanie dla Ciebie. Ponieważ dane są przechowywane wielokrotnie, aktualizacje są bardziej wymagające dla serwera. Tj. wyglądałaby aktualizacja adresu e-mail

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

Ponieważ nie potrzebujesz już AccountID i DeviceID, aby dołączyć, możesz również usunąć te dwa pola.

Częste aktualizacje

Jeśli masz częste aktualizacje, zamiast osadzania możesz użyć Referencji. Myślę, że musisz rozwiązać je po stronie klienta. Masz wtedy trzy kolekcje:

Konto:

{
  _id,
  UserName,
  Email
}

Urządzenie:

{
  _id,
  DeviceCode
}

Powiązanie:

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

W ten sposób nie masz żadnych duplikatów, ale musisz radzić sobie z referencjami.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Zmień kolejność wyświetlania właściwości w MongoDB

  2. MongoDB insertOne()

  3. zbieranie danych grupowych według wielu pól mongodb

  4. Jak grupować dokumenty z określonym polem w agregacji mongodb

  5. Sprawdź, czy w dokumencie MongoDB istnieje wiele pól