Anda menulis ini dengan cara yang salah. Kecocokan pada nilai "id" gudang termasuk dalam bagian "permintaan" dari pernyataan Anda dan bukan di bagian "perbarui". Dengan demikian, Anda tidak ingin UpdateId
varian, tetapi Update
karena memungkinkan pemilihan kueri yang lebih luas:
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)
Perhatikan juga bahwa "notasi titik"
form baik-baik saja di sini karena pemilih Anda untuk elemen array hanyalah bidang tunggal. Anda biasanya hanya membutuhkan $elemMatch
ketika ada lebih dari satu bidang dalam larik untuk menetapkan kecocokan.