MongoDB: Entfernen eines Objekts aus einem Array
In MongoDB können Sie ein Objekt aus einem in ein Dokument eingebetteten Array mit dem $ entfernen Pull-Operator. Wenn Sie ein bestimmtes Objekt aus einem Array entfernen möchten, müssen Sie eine Abfrage bereitstellen, die dem genauen Objekt entspricht.
Bedenken Sie das folgende Dokument:
{
_id: 5150a1199fac0e6910000002,
name: 'some name',
items: [{
id: 23,
name: 'item name 23'
},{
id: 24,
name: 'item name 24'
}]
}
Um das Element mit der ID: 23 aus dem Elementarray zu entfernen, verwenden Sie den folgenden Befehl:
db.mycollection.update( { '_id': ObjectId("5150a1199fac0e6910000002") }, { $pull: { items: { id: 23 } } }, false, // Upsert true, // Multi );
Dieser Befehl aktualisiert das Dokument, indem er das Element aus dem Array entfernt. Die Abfrage gibt das Dokument mithilfe des Felds „_id“ an, und der Operator „$pull“ zielt auf das Array „items“ ab. Innerhalb der $pull-Operation können Sie eine Abfrage angeben, die dem zu entfernenden Objekt entspricht. In diesem Fall gleichen wir das Objekt mit der ID ab: 23.
Mongoose/Node.js-Implementierung
In Mongoose können Sie ein Objekt mit dem aus einem Array entfernen pull()-Methode:
const Model = mongoose.model('Model', new mongoose.Schema({
items: [{
id: Number,
name: String
}]
}));
Model.update(
{ '_id': '5150a1199fac0e6910000002' },
{ $pull: { items: { id: 23 } } },
{ multi: true }, // Update all matching documents
(err, result) => { if (!err) console.log(result); }
);
Dieser Code entfernt das Element mit der ID: 23 aus dem Items-Array aller Dokumente, die mit der angegebenen _id übereinstimmen.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3