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.