Napsal jsi to špatně. Shoda s hodnotou „id“ skladu patří do části „dotaz“ vašeho výpisu, nikoli do sekce „aktualizace“. Jako takový nechcete UpdateId
varianta, ale Update
protože umožňuje širší výběr dotazů:
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)
Všimněte si také, že "tečková notace"
forma je zde v pořádku, protože váš selektor pro prvek pole je pouze singulární pole. Obvykle potřebujete pouze $elemMatch
když je v poli více než jedno pole pro stanovení shody.