MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

mongodb php - wie man eine INNER JOIN-ähnliche Abfrage durchführt

MongoDB unterstützt keine Joins. Wenn Sie Benutzer den Nachrichten zuordnen möchten, können Sie Folgendes tun

1) Tun Sie dies auf der Anwendungsebene. Holen Sie sich die Liste der Benutzer und die Liste der Neuigkeiten und ordnen Sie sie Ihrer Anwendung zu. Diese Methode ist sehr teuer, wenn Sie dies häufig benötigen.

2) Wenn Sie den vorherigen Schritt häufig ausführen müssen, sollten Sie Ihr Schema so umgestalten, dass die Nachrichtenartikel als eingebettete Dokumente zusammen mit den Benutzerdokumenten gespeichert werden.

    {
      "_id": "4ca30373fd0e910ecc000007",
      "login": "user22",
      "pass": "example_pass",
      "date": "2010-09-29"
      "news" : [{  
                   "name": "news 222",
                   "content": "news content 2222",
                   "date": "2010-09-29" 
                }, 
                {
                   "name": "news 222",
                   "content": "news content 2222",
                   "date": "2010-09-29"
                }]
    }

Sobald Sie Ihre Daten in diesem Format haben, ist die Abfrage, die Sie auszuführen versuchen, implizit. Beachten Sie jedoch, dass Analyseabfragen bei einem solchen Schema schwierig werden. Sie müssen MapReduce verwenden, um die zuletzt hinzugefügten Nachrichtenartikel und solche Abfragen zu erhalten.

Letztendlich hängt das Schema-Design und wie viel Denormalisierung Ihre Anwendung verarbeiten kann davon ab, welche Art von Abfragen Sie erwarten, dass Ihre Anwendung ausgeführt wird.

Möglicherweise finden Sie diese Links hilfreich.http://www.mongodb.org/display/DOCS/Schema+Designhttp://www.blip.tv/file/3704083

Ich hoffe, das war hilfreich.