Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak modelować relacje wiele-do-wielu w MongoDB (dla użytkownika MySQL)

Świetne pytanie. Pozwól, że najpierw nakreślę trochę, jak działa relacja N:N, a następnie omówię szczegółowo każdy z Twoich wypunktowań.

N:N w MySQL zwykle masz tabelę przestawną kojarzącą użytkownika z zainteresowaniami (tabela user_interests). W mongo robisz to trochę inaczej. Nadal masz kolekcję użytkowników i zainteresowań, ale teraz przechowujesz listę kluczy objętych zainteresowaniami dla użytkownika. WIĘC coś takiego:

User Collection {
      "name":"Josh",
      "user":"jsmith",
      "interests":[
           {
            "_id":12345,
            "rating":"like"
           },
           {..}..
      ]
}

Przechowując swoje zainteresowania na liście, która jest zapisana w tabeli zainteresowań, możesz wykonać każdą z wymaganych czynności. Jeśli chcesz wykonać zapytanie, możesz to zrobić na podstawie identyfikatora, który znajduje się w tabeli zainteresowań, wykonaj zapytanie, używając modyfikator $in .

Teraz, jeśli chodzi o kolekcję zainteresowań, zrobię co następuje:

User Interest {
      "_id":objectId
      "label":"Swimming",
      "count":intValue
}

Podczas dodawania zainteresowania do dokumentu użytkownika zmienna licznika będzie zależeć od definicji Twoich ocen. Jeśli przechowujesz swoje oceny w oddzielnym obszarze (lub logicznie), wtedy wartość, którą im przypisałeś, będzie tym, co odniesiesz do wartości int będącej przedmiotem zainteresowania. IE:Użytkownik ocenia to meh (która ma wartość 1), a następnie dodałbyś 1 do wartości licznika.

Mam nadzieję, że jest to pomocne i przynajmniej przyniosło kilka innych pomysłów na jego strukturę!

Powodzenia, pamiętaj, że MONGO JEST NIESAMOWITE.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Formularz w PDO do aktualizacji danych

  2. Procenty w MySQL

  3. Jak używać zmiennych użytkownika w klauzuli MySQL LIKE?

  4. Obiekt klasy Baza danych nie mógł zostać przekonwertowany na ciąg

  5. Jakich frameworków użyć do ładowania początkowego mojego pierwszego produkcyjnego projektu scala?