sql >> Database >  >> NoSQL >> MongoDB

MongoDB:werk een veld van een item in de array bij met een match met een ander veld van dat item

U zou dit normaal gesproken doen met de positionele operator $ , zoals beschreven in het antwoord op deze vraag:

Update veld in exacte elementarray in MongoDB

Helaas ondersteunt de positionele operator op dit moment slechts één arrayniveau diep van matching.

Er is een JIRA-ticket voor het soort gedrag dat je wilt:https://jira.mongodb .org/browse/SERVER-831

Voor het geval je Switches kunt maken in plaats daarvan in een object, zou je zoiets als dit kunnen doen:

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


  1. Kan geen gedekte query krijgen voor shard-verzameling in MongoDB

  2. hoe het aantal en het unieke aantal te berekenen over twee velden in de functie Mongo verminderen

  3. mangoest-query:zoek een object op id in een array

  4. MongoDB:Tellen hoeveel items met een bepaalde waarde er in een array zijn, dat is in een document?