2016-08-12 2 views
2

ein Schema Gegeben zurückgegeben werden, der wie folgt aussieht:Fehlende Mongoose Schema Habe noch

var schema = new mongoose.Schema({ name: 'string', size: 'string' }); 

und die Datenbank enthält „name“ für alle Objekte in der Sammlung. Aber dann ändere ich es und entfernen Name

var schema = new mongoose.Schema({ size: 'string' }); 

Und dann werde ich ein auf ihm finden:

schema.find({}).exec().then((objs) => { 
    // objs[0].name still exists 

Ich dachte, wenn das Schema nicht eine Eigenschaft angegeben haben, dann wäre es nicht existieren auf den gefundenen Objekten. Ist das nicht der Fall? Ist die einzige Möglichkeit, eine Eigenschaft zu entfernen, um sie tatsächlich aus dem Objekt in Mongo zu entfernen?

+0

Hat die Antwort Ihnen bei Ihrer Frage geholfen? Es hilft anderen, die SO verwenden, um anzugeben, durch welche Antworten Ihre Frage gelöst wurde. –

Antwort

0

aus dem ursprünglichen Maintainer Zitiert, Aaron Heckmann:

[M] ongoose "spielt schön" mit vorhandenen Daten in der DB, löscht es nicht, wenn Sie ihnen sagen.

[D] die Eigenschaft zu löschen würde funktionieren, wenn Mungo in der Lage wäre, dies zu erreichen, aber leider nicht. Sie können die Eigenschaft jedoch vollständig aus Ihrem Dokument entfernen, indem Sie die Werte auf undefined setzen, wodurch ein $unset ausgelöst wird.

Quelle: Google Groups

Grundsätzlich versucht Mungo zu bestehenden Daten nicht-destruktiv zu sein. Wenn eine Eigenschaft nicht mehr benötigt wird, können Sie ein Update für die Datenbank ausführen, um den Wert zu entfernen, der die Eigenschaft aus jedem Dokument in der Auflistung entfernen würde.