यदि आप सरणी में अनुक्रमणिका जानते हैं तो आप डॉट नोटेशन का उपयोग करके सीधे सरणी तत्व तक पहुंच सकते हैं।
update(
{ _id: ObjectId(xxxx) },
{ $set: { 'columns.0.panels.0.top' : 125}}
)
सुनिश्चित करें कि आपने डॉट नोट किए गए पथ को एक स्ट्रिंग के रूप में उद्धरण चिह्नों में संलग्न किया है।
संपादित करें:
यह कैसे गतिशील रूप से काम कर सकता है, इस पर अधिक विवरण देने के लिए, मैं PHP में एक उदाहरण दूंगा:
$action = array("columns.$colNum.panels.$panelNum" => $newValue);
हां, पोजिशनल ऑपरेटर है। , लेकिन यह काफी उन्नत नहीं लगताए> सरणियों के भीतर सरणियों को बदलने के लिए, यह MongoDB 1.7.0 में बदल सकता है
इस जानकारी को नेस्टेड दस्तावेज़ में भरने की कोशिश करने के बजाय आप एक विकल्प कर सकते हैं। इसे समतल करने का प्रयास करें। आप एक संग्रह बना सकते हैं जिसमें पैनल और कॉलम ऑब्जेक्ट हों:
स्तंभ वस्तु:
{
_id: // MongoId
type: 'column',
user: 'username',
order: 1,
width: 30,
}
पैनल ऑब्जेक्ट:
{
_id: //MongoId
type: 'panel',
user: 'username',
parentColumn: //the columns _id string
top: 125,
left: 100
}
फिर आप वे सभी कॉलम ढूंढ सकते हैं जो उपयोगकर्ता से संबंधित हैं:
find({ type: 'column', user:'username'});
आप एक विशिष्ट कॉलम के लिए सभी पैनल ढूंढ सकते हैं:
find({type: 'panel', columnOwner:'ownerID'});
चूंकि प्रत्येक कॉलम और पैनल में MongoDB द्वारा दी गई एक विशिष्ट आईडी होगी, आप आसानी से क्वेरी कर सकते हैं और विकल्प सेट कर सकते हैं।
update({'_id': ObjectId('idstring')}, {$set : { 'top' : 125}});