2017-09-08 6 views
0

Gibt es eine Möglichkeit, ein Skript zu schreiben, das ein Dokument aktualisiert, indem ein doppeltes Feld mit einem anderen Wert hinzugefügt wird? Ich kann set nicht verwenden, da dies den vorhandenen Wert ersetzt. Ich kann Push nicht verwenden, da das Feld in einem Objekt und nicht in einem Array ist. Ich habe sogar versucht, das neue Feld mit einem anderen Namen zu erstellen und umzubenennen, wodurch auch das vorhandene Feld ersetzt wird.MONGODB - Doppeltes Feld mit anderem Wert hinzufügen

+0

Möglicherweise möchten Sie Code oder zumindest ein Beispiel für das Dokument und das Feld, das Sie replizieren möchten, anzeigen. Bitte lesen Sie auch [Fragen]. – Aron

+0

{ "_id": "Mapping", "Mapping": { "A": { "id": "A1", "Mapping": { "Required": { "Code": " code ", " id1 ":" id ", " id2 ":" id ", " id2 ":" daten.id ", " referenz ":" referenz ", " menge ":" daten.menge “ "Preis": "data.price", "type": "data.type" } } } } } – SuperLauraRae

+0

Above i s ein verkürztes Beispiel für das Dokument, das ich zu aktualisieren versuche. Ich möchte ein anderes Referenzfeld mit einem anderen Wert erstellen, ähnlich wie es zwei ID2-Felder mit zwei verschiedenen Werten gibt. – SuperLauraRae

Antwort

0

Sie können keine doppelten Felder in einem Mongo-Datensatz haben. Eine Mongo-Sammlung ist eine Sammlung von Dokumenten, auch bekannt als Objekte. Sie können kein doppeltes Feld in einem Objekt haben und Mongo ist nicht anders.

+0

Ich habe bereits doppelte Felder im selben Dokument, auf das ich mich beziehe (siehe oben). Ich habe diese nicht selbst hinzugefügt, so dass sie möglicherweise durch manuelle Bearbeitung des Dokuments hinzugefügt wurden, anstatt ein Skript zu verwenden. Allerdings muss ich ein Skript erstellen, um diese Änderungen zu db in anderen env zu fördern – SuperLauraRae

+0

Ich bin nicht sicher, die Förderung dieser Änderungen wäre der Weg, den ich gehen würde. Ich würde gerne wissen, was dazu geführt hat, dass dies überhaupt passiert ist und das beheben. Wenn Sie doppelte Felder für eine db bewerben möchten, woher wissen Sie dann, auf welche Sie in Zukunft verweisen müssen? Vielleicht verstehe ich die Situation nicht, sorry. – jmcgui05

0

MongoDB (und jede andere Datenbank, die ich bisher kennengelernt habe) basiert auf der Idee, dass einzelne Felder identifizierbar sind, so dass sie gefiltert, gruppiert, sortiert werden können, usw ... Das erklärt auch warum MongoDB bietet keine Unterstützung für das Szenario, dem Sie gegenüberstehen. Davon abgesehen kann MongoDB als ein dummer Datenspeicher für beliebige JSON-Daten verwendet werden. Und die JSON-Spezifikation sagt nichts über doppelte Feldnamen aus, weshalb Sie ein solches Dokument wahrscheinlich in MongoDB speichern können.

Wie auch immer, es gibt keine Möglichkeit zu erreichen, was Sie wollen, ohne das gesamte Dokument zu laden, es zu ändern (durch Hinzufügen der doppelten Felder) und dann das gesamte Dokument zu ersetzen. Das wird jedoch funktionieren.

Ich kann mir persönlich kein vernünftiges Szenario vorstellen, in dem diese Art von Dokument sinnvoll wäre. Ich würde Ihnen daher dringend empfehlen, Ihre Dokumentenstruktur erneut zu besuchen.

Verwandte Themen