2016-06-13 9 views
1

Ich benutze MongoDb für eine der mobilen App, die wir entwickeln. Es verfügt über eine Funktion zum Synchronisieren von Kontakten.Mongodb Speichern von Freunden Beziehung

Ich wollte die ideale Möglichkeit zum Speichern der Beziehungen (Freunde Beziehung und nicht RDBMS Art der Beziehung) in mongodb. Ich möchte die Architektur für das gleiche wissen.

Ich habe gedacht, die folgenden User Sammlung Struktur:

{ 
    _id: ObjectID(abc), 
    name: "abc", 
    contacts: ["def", "ghi"] 
} 

In der obigen Sammlung Ich erwäge "def" und "ghi" als Objekt-IDs von Freunden anzeigen abc. Ist das der richtige Weg, oder kann mir jemand einen besseren und richtigen Weg vorschlagen, den sie vielleicht umgesetzt haben?

Alles, worüber ich besorgt bin, ist, dass ich nicht stecken bleiben oder die Leistung treffen sollte, wenn ich in Zukunft Daten abrufen möchte, die die Freunde des Benutzers betreffen.

Erwägen Wenn ich alle Aktivitäten von Sammlung Aktivitäten von meinen Freunden erledigen wollen.

Antwort

2

Ich glaube, Sie Vorteil von NoSQL-Struktur nutzen könnten und speichern/dienen einige weitere Informationen über Freund

{ 
    _id: ObjectID(abc), 
    name: "abc", 
    contacts: [{id:"def" name:"John"}, {id:"ghi", name:"Sari"} ] 
} 

Grundliste Zur Anzeige werden Sie nur eine get-Abfrage benötigen, und dann mit Namen (oder andere wichtige verwandte Details) - nach Aktivitäten suchen.

Der zusätzliche Aufwand mit dieser Struktur ist eine Notwendigkeit, den Namen (und andere Details) jedes Mal zu aktualisieren, wenn der Benutzer seinen Namen aktualisiert - aber das ist kein Hammer - wer ändert seinen Namen häufig?

+0

Ihre Antwort sieht gut aus. Aber bedenken Sie, es gibt viele Aktivitäten eines Benutzers (Freund) und ich muss Aktivitäten meiner Freunde holen. Heißt das, ich muss die folgenden Schritte befolgen: 1) Holen Sie alle meine Kontakte-Array von meinem Benutzerobjekt 2) Dann finden Sie Aktivitäten, wo CreatedBy im Array von Objekt-IDs von ersten Schritt –

+0

für Aktivitäten ist, die ich separate Sammlung als dies betrachten werde wird durch mehrere Benutzer/Freunde Verbindungen Crossfire sein - so getrennt bleiben – profesor79