Meine Vorgehensweise wäre, die Dokumenteninstanz zu erhalten und aus den Instanzfeldern eine neue zu erstellen. Ich bin mir sicher, dass es einen besseren Weg gibt, es zu tun.Einfachste Möglichkeit zum Kopieren/Klonen einer Mungo-Dokumenteninstanz?
Antwort
Können Sie klarstellen, was Sie mit "kopieren/klonen" meinen? Versuchen Sie, ein doppeltes Dokument in der Datenbank zu erstellen? Oder versuchen Sie gerade, zwei var
s in Ihrem Programm zu haben, die doppelte Daten haben?
Wenn Sie gerade tun:
Model.findById(yourid).exec(
function(err, doc) {
var x = doc;
Model.findById(yourid).exec(
function(err, doc2) {
var y = doc2;
// right now, x.name and y.name are the same
x.name = "name_x";
y.name = "name_y";
console.log(x.name); // prints "name_x"
console.log(y.name); // prints "name_y"
});
});
In diesem Fall x
und y
wird in Ihrem Programm zwei „Kopien“ des gleichen Dokuments sein.
Alternativ, wenn Sie eine neue Kopie des Dokuments in die Datenbank einfügen wollte (wenn auch mit einem anderen _id
Ich gehe davon aus), die wie folgt aussehen:
Model.findById(yourid).exec(
function(err, doc) {
var d1 = doc;
d1._id = /* set a new _id here */;
d1.save(callback);
}
);
Oder wenn Sie tun dies von Anfang an, erstellt Sie aka einige Dokument d1
, können Sie einfach save
zweimal aufrufen, ohne Einstellung der _id
:
var d1 = new Model({ name: "John Doe", age: 54 });
d1.save(callback);
d1.save(callback);
Es wird zwei Dokumente jetztmit unterschiedlichen 10 's und alle anderen Felder in Ihrer Datenbank identisch.
Verdeutlicht dies die Dinge ein wenig?
Der folgende Code Dokumente in Amelia Antwort über klonen nicht arbeiten:
Model.findById(yourid).exec(
function(err, doc) {
var d1 = doc;
d1._id = /* set a new _id here */;
d1.save(callback);
}
);
Sie müssen auch
d1.isNew = true;
wie in zurückgesetzt:
Model.findById(yourid).exec(
function(err, doc) {
doc._id = mongoose.Types.ObjectId();
doc.isNew = true; //<--------------------IMPORTANT
doc.save(callback);
}
);
danke für die doc.isNew :) – victorkurauchi
rettete mein Leben (Art von :) :) – JoeTidee
Noch ein Leben gerettet mit der doc.isNew. Vielen Dank! – jimmy
Der folgende Code Dokumente zu klonen:
Model.findById(yourid).exec(
function(err, doc) {
var newdoc = new Model(doc);
newdoc ._id = mongoose.Types.ObjectId();
newdoc .save(callback);
}
);
Für einfach dieses Klons verwenden:
Context.findOne({
_id: context._id
})
.then(function(c) {
c._id = undefined;
c.name = context.name;
c.address = context.address;
c.created = Date.now();
return Context.create(c.toObject());
}).then(function(c) {
return res.json({
success: true,
context: context
});
}).catch(function(err) {
next(err, req, res);
});
- 1. Einfachste Möglichkeit zum Erstellen einer ausgelasteten Animation in WPF
- 2. Einfachste Möglichkeit zum Export von Surveymonkey-Ergebnissen
- 3. Einfachste Möglichkeit, browserübergreifend XmlHttpRequest abzurufen
- 4. Einfachste Möglichkeit, Grafiken zu erstellen
- 5. Einfachste Möglichkeit zum Speichern und Laden von Informationen C#
- 6. Einfachste Möglichkeit zum Looping zwischen zwei NSDates auf dem iPhone?
- 7. Einfachste CMS zum Thema?
- 8. Einfachste Möglichkeit, alle HTML-Links in einer Zeichenfolge mit PHP
- 9. Einfachste Möglichkeit, Lokalisierungsdateien zu generieren
- 10. Einfachste Möglichkeit, Daten aus einer dynamischen HTML-Tabelle zu erhalten
- 11. Einfachste Möglichkeit, Ereignisse in einer Klasse zu erstellen
- 12. Einfachste Möglichkeit, ein Rechteck zu drehen
- 13. Einfachste Möglichkeit zum Warmladen einer CSS-Datei in Webpack mit Webpack Dev Middleware
- 14. Einfachste Möglichkeit, Hotmail-E-Mails zu lesen
- 15. Einfachste Möglichkeit, einen rekursiven Self-Join durchzuführen?
- 16. Einfachste Möglichkeit, PDFs in Tridion 2011 bereitzustellen
- 17. Einfachste Möglichkeit, mehrere Zweige in einer einzigen Zeile zu reverbieren
- 18. Einfachste, schnellste Möglichkeit, alle Abhängigkeiten von einer Klasse zu lösen
- 19. Einfachste Möglichkeit, eine Zeichenfläche aus einer C++ - DLL zu erstellen?
- 20. Einfachste Möglichkeit, GWT zu einer Spring MVC-Anwendung hinzuzufügen?
- 21. einfachste Möglichkeit, Svg in Android zu verwenden?
- 22. Java: einfachste Möglichkeit, eine Bean mit Servletparametern
- 23. Einfachste Möglichkeit, ein zweidimensionales Array zu implodieren()?
- 24. Einfachste Möglichkeit, eine unterzeichnete Nummer zu verschieben
- 25. Angular2 einfachste Möglichkeit, HTTP-Antworten zu cachen
- 26. einfachste Möglichkeit, Basis 3 Zahlen zu generieren
- 27. Schnellste Möglichkeit zum Erstellen einer einfachen Flash-App
- 28. Einfachste Möglichkeit, keine freie Speicherplatzsituation zu simulieren?
- 29. Einfachste Möglichkeit ODBC auf Windows zu testen
- 30. Einfachste Möglichkeit, ein Bild in Javafx hinzuzufügen?
Ja, in der Tat, ich landete das 'doc' bekommen,' _id' Entfernen und Speichern :) – fusio
Freut mich zu hören geklappt! – Amalia
Wie hast du die _id entfernt? – JoeTidee