Ich verwende die Mongoose Library für den Zugriff auf MongoDB mit node.js.
Gibt es eine Möglichkeit , einen Schlüssel aus einem Dokument zu entfernen ? dh den Wert nicht nur auf null setzen, sondern entfernen?
User.findOne({}, function(err, user){
//correctly sets the key to null... but it's still present in the document
user.key_to_delete = null;
// doesn't seem to have any effect
delete user.key_to_delete;
user.save();
});
mongodb
node.js
mongoose
document-database
Daniel Beardsley
quelle
quelle
Antworten:
In früheren Versionen hätten Sie den Node-Mongodb-Native-Treiber löschen müssen. Jedes Modell verfügt über ein Sammlungsobjekt, das alle Methoden enthält, die Node-Mongodb-Native bietet. Sie können die betreffende Aktion also folgendermaßen ausführen:
Seit Version 2.0 können Sie:
Und seit Version 2.4 können Sie Folgendes tun, wenn Sie bereits eine Instanz eines Modells haben:
quelle
User.update({ _id: id }, { $unset: { field: 1 }}, callback)
Sie entweder oder wenn Sie eine Dokumentinstanz haben, setzen Sie den Pfad auf undefiniert und speichern Sie ihn dann:doc.field = undefined; doc.save()
doc.set('field', undefined)
doc.field.foo
?doc.set('field', undefined)
möglicherweise nicht aus, da im strengen Modus (Standard) keine Felder mehr festgelegt werden können, die nicht mehr im Schema enthalten sind.doc.set('field', undefined, { strict: false })
hat gut funktioniert.Sie möchten dies tun:
quelle
Ich benutze Mungo und mit einer der oben genannten Funktionen habe ich die Anforderung erfüllt. Die Funktion kompiliert fehlerfrei, aber das Feld bleibt weiterhin erhalten.
hat den Trick für mich gemacht.
quelle
Bei der Mongo-Syntax müssen Sie Folgendes tun, um einen Schlüssel zu löschen:
Scheint bei Mongoose das gleiche.
Bearbeiten
Überprüfen Sie dieses Beispiel.
quelle
Könnte dies ein Nebenproblem wie bei der Verwendung sein
anstatt
für den Rückruf des Funds? Ich versuche nur dabei zu helfen, da ich den Fall bereits hatte.
quelle
Mungodokument ist KEIN einfaches Javascript-Objekt und deshalb können Sie den Löschoperator nicht verwenden (oder
unset
aus der 'lodash'-Bibliothek).Sie können doc.path = null || setzen undefined oder verwenden Sie die Document.toObject () -Methode, um das Mungodokument in ein einfaches Objekt umzuwandeln und von dort aus wie gewohnt zu verwenden. Lesen Sie mehr in mongoose api-ref: http://mongoosejs.com/docs/api.html#document_Document-toObject
Beispiel würde ungefähr so aussehen:
quelle
Versuchen:
quelle
Das Problem bei all diesen Antworten ist, dass sie für ein Feld funktionieren. Angenommen, ich möchte alle Felder aus meinem Dokument löschen, wenn sie eine leere Zeichenfolge sind
""
. Zuerst sollten Sie prüfen , ob Feld leere Zeichenfolge es zu setzen$unset
:quelle
Wenn Sie einen Schlüssel aus der Sammlung entfernen möchten, versuchen Sie diese Methode. das hat bei mir funktioniert
quelle
Sie können delete user._doc.key verwenden
quelle