2011-03-09 11 views
17

में एकाधिक $ inc अपडेट अपडेट हो सकता है क्या एक अपडेट दस्तावेज़ में दो $ inc ऑपरेटरों को पास करके एक दस्तावेज़ को अपडेट करना संभव है?MongoDB

उदाहरण के लिए, मैं निम्नलिखित अद्यतन दस्तावेज़ का उपयोग कर दिए गए दस्तावेज़ में दो अलग अलग क्षेत्रों को बढ़ाने के लिए कोशिश कर रहा हूँ:

{ 
    "$inc" : { "ViewAggregates.4d75b891842f2d3930cf7674" : 1 }, 
    "$inc" : { "ViewAggregates.Total" : 1 } 
} 

कोई त्रुटि नहीं फेंक दिया जाता है और दस्तावेज़ अद्यतन किया जाता है, लेकिन खेतों का केवल एक ही वृद्धि की गई है । ऐसा लगता है जैसे सर्वर ने पहले $ inc ऑपरेटर को नजरअंदाज कर दिया और केवल दूसरा वास्तव में लागू किया गया था।

क्या यह इरादा \ सही व्यवहार है या क्या मुझे कुछ याद आ रही है?

उत्तर

43

यह कुंजीपटल कुंजी अद्वितीय होने का एक दिलचस्प दुष्प्रभाव है - दूसरा $inc पहले ओवरराइट करता है।

हालांकि, यह अभी एक से अधिक क्षेत्र को बढ़ाने के लिए संभव है:

{ 
    "$inc": { 
     "ViewAggregates.4d75b891842f2d3930cf7674" : 1, 
     "ViewAggregates.Total" : 1 
    } 
} 

यह कई अन्य ऑपरेटरों के लिए काम करता भी :-)

+0

आह! इस तथ्य को नजरअंदाज करने के लिए मेरे बारे में मूर्खतापूर्ण है कि कुंजी अद्वितीय हैं। रात में इतनी देर तक काम नहीं करना सीखना चाहिए। धन्यवाद! –

+0

लॉल, मैंने खुद को कुछ बार किया है। –