MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Kann Mongo Array-Daten aktualisieren?

Ich bin gerade selbst auf dieses Problem gestoßen. Ich konnte keine Ein-Aufruf-Lösung finden, aber ich habe eine Zwei-Aufruf-Lösung gefunden, die funktioniert, wenn Sie einen eindeutigen Wert in Ihren Array-Elementen haben . Verwenden Sie den $pull Befehl zuerst, der Elemente aus einem Array entfernt, und dann $push .

db.soup.update({
    "tester":"tom"
}, {
    $pull: {
        'array': {
            "id": "3"
        }
    }
})
db.soup.update({
    "tester":"tom"
}, {
    $push: {
        'array': {
            "id": "3",
            "letter": "d"
        }
    }
})

Dies sollte funktionieren, wenn das Dokument nicht existiert, wenn das Dokument existiert, aber der Eintrag im Array nicht existiert, und wenn der Eintrag existiert.

Auch dies funktioniert nur, wenn Sie etwas wie die id haben Feld in diesem Beispiel, das für alle Elemente des Arrays eindeutig sein sollte.