मैं धारणा है कि यह सामान्य MongoDB व्यवहार था के तहत किया गया है, और कुछ भी नहीं किया है जावा चालक के साथ करो।
केवल एक चीज मैं दस्तावेज में पा सकते हैं this है:
getLastError.n अपडेट करने या निकालने दस्तावेजों की संख्या बताता है, अगर पूर्ववर्ती आपरेशन का अपडेट था या ऑपरेशन को हटा दें।
एक insert
जा रहा है न तो एक update
और न ही एक remove
, n
निर्दिष्ट किया जा प्रतीत नहीं होता है और 0 किसी भी रूप में रूप में अच्छा एक डिफ़ॉल्ट मान है। आप देख सकते हैं यह आसानी से मोंगो खोल में पर्याप्त:
> db.test.insert({_id: 'test'})
> db.getLastErrorObj()
{ "n" : 0, "connectionId" : 7, "err" : null, "ok" : 1 }
जब तक मैं गलत कर रहा हूँ, यह वास्तव में एक मुद्दा है: अपने आप से पूछना है जो परिस्थितियों में डालने विफल हो जाएगा (जो एक राशि, कनेक्शन विफलता अन्य)। केवल एक जिसे मैं सोच सकता हूं वह एक समानता बाधा उल्लंघन है, जिसके परिणामस्वरूप अपवाद होगा। तो लगभग परिभाषा के अनुसार, तथ्य यह है कि आपको WriteResult
उदाहरण प्राप्त होता है, इसका मतलब है कि ऑपरेशन सफल था और एक दस्तावेज़ डाला गया था।
कुछ नोट:
- मेरे पिछले तर्क अपने
WriteConcern
पर्याप्त उच्च कि त्रुटियों रिपोर्ट कर रहे हैं किया जा रहा है पर निर्भर करता है। यदि आप WriteConcern.NONE
का उपयोग कर रहे हैं, उदाहरण के लिए, कोई अपवाद कभी नहीं उठाया जाएगा।
- यदि अपडेट किए गए दस्तावेज़ों की संख्या आपके लिए एक पूर्ण आवश्यक है, तो आप हमेशा
insert
के बजाय save
का उपयोग कर सकते हैं। बहुत साफ नहीं है, लेकिन यह जिस तरह से आप अपेक्षा करते हैं उससे व्यवहार करता है।
स्रोत
2013-09-06 14:19:38
यह ठीक से काम करता है। आप किस मोंगो संस्करण का उपयोग कर रहे हैं? क्या इस ऑपरेशन के बाद डीबी में दस्तावेज़ ठीक से डाले गए हैं? – Buchi
हाँ दस्तावेजों को सही ढंग से डाला गया था! मोंगो संस्करण: 2.2.2 –
मुझे भी वही चीज़ मिल रही है। यह 0 लौट रहा है। यहां देखें http: // stackoverflow।कॉम/प्रश्न/10662858/mongodb-java-api-writeresultgetn – btiernay