आपने इसे गलत तरीके से लिखा है। वेयरहाउस "आईडी" मान पर मिलान आपके कथन के "क्वेरी" भाग में है, न कि "अपडेट" अनुभाग में। जैसे, आप UpdateId
. नहीं चाहते हैं संस्करण, लेकिन Update
क्योंकि यह एक व्यापक क्वेरी चयन की अनुमति देता है:
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)
यह भी ध्यान रखें कि "dot notation"
फॉर्म यहाँ ठीक है क्योंकि सरणी तत्व के लिए आपका चयनकर्ता सिर्फ एक विलक्षण क्षेत्र है। आपको आमतौर पर केवल $elemMatch
की आवश्यकता होती है
जब मैच को स्थापित करने के लिए सरणी में एक से अधिक फ़ील्ड हो।