Hai scritto questo nel modo sbagliato. La corrispondenza sul valore "id" del magazzino appartiene alla parte "query" dell'estratto conto e non alla sezione "aggiornamento". Pertanto, non vuoi l'UpdateId
variante, ma l'Update
in quanto consente una più ampia selezione di query:
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)
Tieni inoltre presente che la "dot notation"
il modulo va bene qui poiché il tuo selettore per l'elemento dell'array è solo un campo singolare. In genere hai solo bisogno di $elemMatch
quando c'è più di un campo nell'array per stabilire la corrispondenza.