Hier ist die Array-Struktur
contact: {
phone: [
{
number: "+1786543589455",
place: "New Jersey",
createdAt: ""
}
{
number: "+1986543589455",
place: "Houston",
createdAt: ""
}
]
}
Hier kenne ich nur die Mongo-ID ( _id
) und die Telefonnummer ( +1786543589455
) und muss das gesamte entsprechende Array-Element aus dem Dokument entfernen. Das heißt, das nullindizierte Element im Telefonarray stimmt mit der Telefonnummer überein und muss das entsprechende Arrayelement entfernen.
contact: {
phone: [
{
number: "+1986543589455",
place: "Houston",
createdAt: ""
}
]
}
Ich habe es mit der folgenden Update-Methode versucht
collection.update(
{ _id: id, 'contact.phone': '+1786543589455' },
{ $unset: { 'contact.phone.$.number': '+1786543589455'} }
);
Es wird jedoch number: +1786543589455
aus dem inneren Array-Objekt entfernt, nicht aus dem indizierten Element Null im Telefon-Array. Versucht mit pull
auch ohne Erfolg.
Wie entferne ich das Array-Element in Mongodb?
{ $pull: { 'contact.phone.$': { 'contact.phone.$.number': '+1786543589455' } } }
und{ $pull: { 'contact.phone': { 'contact.phone.$.number': '+1786543589455' } } }
ohne Erfolg versucht . Versteht das Arbeiten von Positionsoperatoren hier nicht?.update()
ein einzelnes Dokument aktualisiert. Verwenden Sie die{ multi: true }
Option, um mehrere Dokumente zu aktualisieren .db.collection.update
Einzelheiten finden Sie in den Dokumenten .Mit dem folgenden Code wird das gesamte Objektelement aus dem Array entfernt, wobei die Telefonnummer "+1786543589455" lautet.
quelle
Im Mungo: aus dem Dokument :
Siehe Leonid Beschastnys Antwort für die richtige Antwort.
quelle
Sie können einfach $ pull verwenden, um ein Unterdokument zu entfernen. Der Operator $ pull entfernt aus einem vorhandenen Array alle Instanzen eines Werts oder von Werten, die einer bestimmten Bedingung entsprechen.
Dadurch wird Ihr übergeordnetes Dokument anhand der angegebenen ID gefunden und anschließend das Element aus dem Unterdokument entfernt, das den angegebenen Kriterien entspricht.
Lesen Sie mehr über Pull hier .
quelle
Wenn Sie die Mongoose-API verwenden und ein Unter- / Unterobjekt abrufen möchten: Lesen Sie dieses Dokument. Vergessen Sie nicht, save () zu verwenden, wenn Sie mit der Bearbeitung fertig sind. Andernfalls werden die Änderungen nicht in der Datenbank gespeichert.
quelle