sql >> Database teknologi >  >> NoSQL >> MongoDB

mgo:hvordan man opdaterer et specifikt array i et dokument

Du skrev det den forkerte vej rundt. Matchet på lagerets "id"-værdi hører hjemme i "forespørgsel"-delen af ​​din erklæring og ikke i "opdatering"-sektionen. Som sådan vil du ikke have UpdateId variant, men Update da det tillader et bredere udvalg af forespørgsler:

query := bson.M{
    "_id": bson.ObjectIdHex(productId),
    "location.warehouse": bson.ObjectIdHex(warehouseId)
}

update := bson.M{
    "$set": bson.M{
        "location.$.count": 4
    }
}

err := coll.Update(query,update)

Bemærk også, at "dot notation" form er fint her, da din vælger for array-elementet kun er et enkelt felt. Du behøver typisk kun $elemMatch når der er mere end ét felt i arrayet for at etablere match.




  1. MongoDB insertMany()

  2. Kører MongoDB Compass på Mac

  3. Hvad gør jeg forkert, når jeg manipulerer data i Meteor/MongoDB?

  4. Top 10 funktioner i MongoDB Atlas