Vous avez écrit ceci dans le mauvais sens. La correspondance sur la valeur "id" de l'entrepôt appartient à la partie "requête" de votre relevé et non à la section "mise à jour". En tant que tel, vous ne voulez pas que le UpdateId
variante, mais la Update
car il permet une sélection de requêtes plus large :
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)
Notez également que la "notation par points"
form est bien ici car votre sélecteur pour l'élément de tableau n'est qu'un champ singulier. Vous n'avez généralement besoin que de $elemMatch
lorsqu'il y a plus d'un champ dans le tableau pour établir la correspondance.