Mysql
 sql >> Datenbank >  >> RDS >> Mysql

So modellieren Sie viele-zu-viele-Beziehungen in MongoDB (für einen MySQL-Benutzer)

Tolle Frage. Lassen Sie mich zuerst ein wenig skizzieren, wie die N:N-Beziehung funktioniert, dann werde ich detailliert auf jeden Ihrer Aufzählungspunkte eingehen.

N:N In MySQL haben Sie normalerweise Ihre Pivot-Tabelle, die Ihren Benutzer und Ihre Interessen verknüpft (user_interests-Tabelle). In Mongo machen Sie das etwas anders. Sie haben immer noch eine Sammlung von Benutzern und Interessen, aber stattdessen speichern Sie jetzt eine Liste von Schlüsseln unter Interessen für einen Benutzer. SO etwa so:

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

Indem Sie Ihre Interessen in einer Liste speichern, die auf Ihrer Interessentabelle abgegrenzt ist, können Sie jede gewünschte Aktion ausführen. Wenn Sie eine Abfrage durchführen möchten, würden Sie sie basierend auf der ID in der Interessentabelle ausführen. Führen Sie dann eine Abfrage mit dem $in-Modifikator .

Jetzt würde ich für Ihre Interessensammlung Folgendes tun:

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

Beim Hinzufügen eines Interesses zu einem Benutzerdokument würde die Zählvariable dann von der Definition Ihrer Bewertungen abhängen. Wenn Sie Ihre Bewertungen in einem separaten Bereich (oder in Logik) speichern, dann wäre der Wert, den Sie ihnen zugewiesen haben, das, was Sie dann mit dem interessierenden int-Wert in Beziehung setzen. IE:Benutzer bewertet es meh (was einen Wert von 1 hat), dann würden Sie 1 zum Zählwert addieren.

Hoffentlich ist dies hilfreich und hat zumindest zu einigen anderen Ideen zur Strukturierung geführt!

Viel Glück, denken Sie daran, MONGO IST FANTASTISCH.