sql >> Base de Datos >  >> NoSQL >> MongoDB

mgo:cómo actualizar una matriz específica en un documento

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.