2016-01-15 24 views
8

मैं MongoDb 2.6.10 का उपयोग कर रहा हूं और सी # ड्राइवर 1.9.2 का उपयोग कर रहा हूं। सर्वर में दो सर्वरों की एक प्रतिकृति है।मोंगो अपडेट प्रतिक्रिया का कहना है कि कोई दस्तावेज़ अपडेट नहीं हुआ है, लेकिन दस्तावेज़

मेरे दस्तावेज़ प्रारूप के हैं। itemId अद्वितीय है।

{ 
    "itemID": 2314, 
    "Favorites": [1, 24, 26, 34] 
} 

तो मैं रूप

var query = Query.EQ("itemID", itemId); 
var result = collection.Update(query, Update.Pull("Favorites", favoriteIdToRemove)); 

की एक पसंदीदा दूर करने के लिए हर बार करने के बाद कोड है, मैं जाँच करें कि result.DocumentsAffected 1. एक समय में एक बार के बराबर है, मान के रूप में वापस आता है 0. जब मैं स्वयं मोंगोडीबी में जाता हूं, तो मैं आइटम आईडी से मेल खाने वाले दस्तावेज़ को पा सकता हूं, और मैं पसंदीदा आईडी देख सकता हूं जिसे सरणी में निकालने का प्रयास किया गया है। परिणाम.ओके सच है, और कोई त्रुटि जानकारी नहीं है।

इससे असफल होने का कारण क्या हो सकता है?

+1

आमतौर पर, समस्या दस्तावेज़ और अद्यतन अनुरोध के बीच मेल नहीं खाती है। क्या आप एक विशिष्ट पुनरुत्पादित उदाहरण प्रदान करने के लिए अपना प्रश्न संपादित कर सकते हैं? – JohnnyHK

+0

समस्या यह है कि यह लगातार पुनरुत्पादित नहीं है। वास्तव में, यह हर दो दिनों में एक बार होता है। यह मेरा सटीक कोड है, और एक नमूना दस्तावेज़ है। – Nikhil

उत्तर

1

मैं कोई विशेषज्ञ नहीं हूं लेकिन मेरा अनुमान लिखना है क्योंकि मोंगोडीबी में दस्तावेजों को लिखने और अपडेट करने के लिए गारंटी के विभिन्न स्तर हैं।

MongoCollection.Update Method (IMongoQuery, IMongoUpdate) 

यह बेहतर हो सकता है इस method बजाय का उपयोग करने के: Write Concerns

तो बजाय इस method का उपयोग कर देखें

MongoCollection.Update Method (IMongoQuery, IMongoUpdate, WriteConcern) 

और WriteConcern निर्दिष्ट होने की

WriteConcern.WMajority 

इस तरह अद्यतन में उच्चतम गुआरा है ntee।

+0

प्राथमिक सर्वर पर सभी लेखन ऑपरेशन नहीं किए गए हैं? – Nikhil

+0

हां, सभी लिखने के संचालन प्राथमिक पर होते हैं। हालांकि, आप प्राथमिक को एक सफल लेखन को स्वीकार करने के लिए इंतजार कर सकते हैं जब तक कि दूसरे सेकेंडरी ने लेखन को दोहराया न हो। –

+0

मैं कोशिश करूँगा। हालांकि, यदि सभी लिखने प्राथमिक हैं, तो लिखने की चिंता को बदलने से दस्तावेज़ के किस संस्करण को प्रभावित किया जाता है? – Nikhil

0

एक संभावना है कि जब दस्तावेज़ पहले से मौजूद है और पिछले दस्तावेज़ के समान ही है, तो कोई बदलाव की आवश्यकता नहीं होगी और इसलिए, दस्तावेज़ प्रभावित संपत्ति 0 होगी। आप यहां दस्तावेज़ देख सकते हैं: https://docs.mongodb.org/manual/reference/method/WriteResult/#WriteResult। आप परिणाम की प्रतिक्रिया संपत्ति में इन गुणों को देख सकते हैं।

+0

जब तक उपरोक्त दस्तावेज़ के लिए मेरी क्वेरी गलत नहीं है, तो मुझे यकीन है कि दस्तावेज़ को पसंदीदा हटा दिया जाना चाहिए था। जब मैं MongoVUE का उपयोग कर दस्तावेज़ की जांच करता हूं, तो यह उस पसंदीदा को दिखाता है जिसे मैंने निकालने का प्रयास किया था। – Nikhil

+0

यदि आप भरोसेमंद (या अविश्वसनीय रूप से) प्रजनन बना सकते हैं, तो jira.mongodb.org पर एक सर्वर टिकट दर्ज करें। –

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