2017-06-30 3 views
0

In einer Mongo-Umgebung ist es vorteilhaft, Daten in Dokumente einzubetten.Mongo DB Speichern von Referenzen

so zum Beispiel ein Mitarbeiter Dokument:

{ 
    { 
     userid: 'someid', 
     username: 'user1' 
     isManager: true, 
     subordinates: [ 
      { 
        userid: 'anotherid', 
        username: 'user2', 
        isManager: false 
      } 
     ], 
     officeLocation: { 
      officeId: 'someofficeid', 
      officeName: 'Some Office' 
     } 
    }, 
    { 
      userid: 'anotherid', 
      username: 'user2', 
      isManager: false, 
      officeLocation: { 
      officeId: 'someotherofficeid', 
      officeName: 'Some Other Office' 
      } 
    } 
} 

Und das Office-Dokument:

{ 
    { 
      officeid: 'someofficeid', 
      officeName: 'Some Office' 
    }, 
    { 
      officeid: 'someotherofficeid', 
      officeName: 'Some Other Office' 
    } 
} 

können also davon ausgehen, dass jemand in der Gesellschaft entscheidet, dass sie nicht mögen den Namen Some Other Office und sie möchte es in Some Cool Office ändern.

Wenn sie die Änderung im Bürodokument vornehmen, wie können wir alle eingebetteten Some Other Office im Mitarbeiterdokument auch aktualisieren?

Es scheint, dass jedes Mal, wenn Sie ein Stück Daten aus einem Dokument nehmen und es in ein Objekt in einem anderen Dokument einbetten, dass die Verbindung zwischen den beiden gebrochen wird und dann müssen Sie separate Abfragen schreiben, um die Daten in allen zu aktualisieren die verschiedenen Spots, in die du das Objekt eingebettet hast.

Ich mag die Idee von eingebetteten Dokumenten, anstatt Referenzen zu speichern, aber ohne irgendeine Art von 2-Wege-Datenbindung scheint es unpraktisch, wenn es um die Aktualisierung von Informationen kommt.

Gibt es eine Möglichkeit, die Daten auf zwei Arten zu binden oder gibt es einen einfacheren Weg, meine Daten zu modellieren?

Dank

Antwort

0

Es remainds mich über die traditionellen RDBMS-Systeme, wenn Sie ein Informationsmodell zu normalisieren/denormalize. Ich bin mir nicht sicher über die Bindung, aber, wenn Sie die "Single True" für eine Information benötigen, ist der bessere Weg, die Informationen nie an zwei verschiedenen Orten gespeichert. In diesem Fall ist es möglicherweise besser, die Office-Informationen in einem separaten Dokument zu speichern und nur mit der ID zu verknüpfen.