2012-12-29 7 views
5

Model.findByIdAndUpdate और Model.increment() को गठबंधन करने का कोई तरीका है जो mongoose देशी संस्करण में वृद्धि करता है? या Model.update() और __v की कोई वृद्धि?मोंगोस findByIdAndUpdate() या अद्यतन() और वृद्धि()। __v कैसे बढ़ाना है?

इस कोड __v

Station.update({ _id: req.params.id }, 
       { $set: req.body, $inc: { __v: 1 } }, 
       { multi: false }, callback); 

को नहीं बढ़ाया है, लेकिन किसी भी कस्टम Number क्षेत्र की वृद्धि कर:

Station.update({ _id: req.params.id }, 
       { $set: req.body, $inc: { count: 1 } }, 
       { multi: false }, callback); 

अब तक मैं __v बढ़ाने के लिए सिर्फ एक ही रास्ता मिल गया है:

Station.findById(req.params.id, function (err, station) { 
    station.increment(); // this increments __v 
    station.save(req.body, callback) 
}) 
+0

http://stackoverflow.com/questions/7334390/has-mongoose-support-findandmodify-mongodb- विधि –

उत्तर

4

It's possible that this is by design. इन विशेष __v एक विशेष मोंगोस आंतरिक कुंजी है जिसका विशिष्ट उपयोग कई बचत कार्यों को टकराव से रोकने के लिए है जब दस्तावेज़ के किसी ऐरे तत्व में स्थितिगत परिवर्तन होते हैं। स्वयं द्वारा परमाणु अद्यतन संचालन इस जोखिम से अवगत नहीं हैं, इसलिए अलगाव में उन्हें __v बढ़ाने की आवश्यकता नहीं है।

हालांकि गैर परमाणु खोज/सहेजने वाली संरचनाओं के साथ परमाणु अद्यतनों को अंतःस्थापित करना संभव है, इसलिए मैंने डेवलपर को देखने के लिए issue सबमिट किया।

संबंधित मुद्दे