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

MongoDB:Aktualisieren Sie ein Feld eines Elements im Array mit einem übereinstimmenden anderen Feld dieses Elements

Normalerweise würden Sie dies mit dem Positionsoperator $ tun , wie in der Antwort auf diese Frage beschrieben:

Feld im Array exakter Elemente in MongoDB aktualisieren

Leider unterstützt der Positionsoperator derzeit nur eine Array-Level-Tiefe des Abgleichs.

Es gibt ein JIRA-Ticket für das gewünschte Verhalten:https://jira.mongodb .org/browse/SERVER-831

Falls Sie Switches machen können in ein Objekt, könnten Sie stattdessen so etwas tun:

db.colection.update(
    {
        _id: ObjectId("561ad881755a021904c00fb5"),
        "Switch.Ports.PortNumber": 5
    }, 
    {
        $set: {
            "Switch.Ports.$.Status": "Empty"
        }
    }
)