Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como modelar relacionamentos muitos para muitos no MongoDB (para um usuário MySQL)


Ótima pergunta. Deixe-me primeiro descrever um pouco de como funciona o relacionamento N:N, então entrarei em detalhes em cada um de seus pontos de bala.

N:N no MySQL normalmente você tem sua tabela dinâmica associando entre seu usuário e interesses (tabela user_interests). No mongo você faz isso um pouco diferente. Você ainda tem uma coleção de usuários e interesses, mas agora você armazena uma lista de chaves em interesses para um usuário. ENTÃO algo assim:
User Collection {
      "name":"Josh",
      "user":"jsmith",
      "interests":[
           {
            "_id":12345,
            "rating":"like"
           },
           {..}..
      ]
}

Ao armazenar seus interesses em uma lista que é codificada em sua tabela de interesses, você pode realizar cada uma das ações necessárias. Se você quisesse fazer uma consulta, você o faria com base no ID que está na tabela de interesses, então faça uma consulta usando o $in modificador .

Agora, para sua coleção de interesses, eu faria o seguinte:
User Interest {
      "_id":objectId
      "label":"Swimming",
      "count":intValue
}

Ao adicionar um interesse a um documento de usuário, a variável de contagem dependeria da definição de suas classificações. Se você estiver armazenando suas classificações em uma área separada (ou na lógica), o valor atribuído a elas seria o que você relacionaria ao valor int em interesse. IE:O usuário avalia isso meh (que tem um valor de 1), então você adicionaria 1 ao valor de contagem.

Espero que isso seja útil e pelo menos tenha trazido algumas outras idéias sobre como estruturá-lo!

Boa sorte, lembre-se MONGO É INCRÍVEL.