Frage

Ich habe mehrere Situationen auftreten, wenn MongoDB verwenden, die die Verwendung von DBRefs erfordern. Aber ich möchte auch selbst einige Felder aus dem referenzierten Dokument in der dBref zwischenzuspeichern.

{$ref:'user', $id:'10285102912A', username:'Soviut'}

Zum Beispiel kann ich den Benutzernamen zur Verfügung, auch haben wollen, obwohl der Benutzer Dokument verwiesen wird. Dies würde mir alle Vorteile eines einzigen Dokuments Ansatz; Schnellere Abfragen und wodurch die Notwendigkeit manueller dereferenzierenden in meinem Code zu tun. Während zur gleichen Zeit erlaubt mir Referenzen zu verwenden, wo sie Sinn machen.

Die Idee ist, dass, wenn das referenzierte Dokument aktualisiert wird (ein Benutzer ändert ihren Namen, zum Beispiel) meine Business-Ebene automatisch alle Dokumente aktualisieren, die darauf verweisen.

Schließlich fragen, ich bin, wenn es zum guten Ton ist zusätzliche Felder zu speichern, auf meinem DBRefs? Wird es etwas brechen? Werde ich meine Daten, die jedes Mal, wenn eine Referenz verlieren wird neu geschrieben? Wird Fahrer wie pymongo es unterstützen?

War es hilfreich?

Lösung

Schließlich frage ich mich, wenn es zum guten Ton ist zusätzliche Felder zu speichern, auf meinem DBRefs?

Es könnte sauberer sein getrennt zu haben „Im Cache“ und „ref“ Felder ... es hängt ein, was Ihre Daten wie ist.

Kann ich meine Daten jedes Mal verlieren einen Verweis neu geschrieben wird?

Sie können, aber nicht, wenn Sie vorsichtig sind. Wenn Sie die DB ref subobject aktualisieren, stellen Sie sicher sind Sie, die spezifischen Felder aktualisieren Sie aktualisiert möchten, nicht die ganze subobject überschrieben werden.

Denken Sie daran, dass die Referenzen, wie sie nur ganz normale Objekte sind. Die Datenbankreferenz ist ein Standard, nicht eine besondere Art.

Will Fahrer wie pymongo unterstützt?

Der dereferencing Helfer des Fahrers wird immer noch funktionieren. Die Helfer einfach eine FindOne mit dem $ ref und $ id Felder aus.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top