Escribiste esto al revés. La coincidencia en el valor de "id" del almacén pertenece a la parte de "consulta" de su estado de cuenta y no a la sección de "actualización". Como tal, no desea el UpdateId
variante, pero la Update
ya que permite una selección de consulta más amplia:
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)
También tenga en cuenta que la "dot notation"
El formulario está bien aquí ya que su selector para el elemento de matriz es solo un campo singular. Por lo general, solo necesita $elemMatch
cuando hay más de un campo en la matriz para establecer la coincidencia.