2012-12-27 10 views
5

मेरे पास काफी गहन ऑपरेशन है जिसमें कुछ घंटों के लिए एक लूप में MongoCursor चलाया जाता है (एक vb.net ऐप पर C# ड्राइवर के माध्यम से चल रहा है। मुझे यकीन नहीं है कि क्या कारण हैं यह है, लेकिन मैं कुछ समय के बाद एक अपवाद में चलानेमोंगोडीबी सी # चालक 'कर्सर नहीं मिला'

Cursor not found 

यह एक कर्सर समय समाप्ति के कारण हो सकता है, शायद? वहाँ एक तरह से मैं यह हो रहा रोक सकता है? है, तो इसकी एक टाइमआउट मुद्दा है कि कैसे मैं एक लंबे समय तक टाइमआउट रखूँ ?

उत्तर

13

आप सी # चालक में कर्सर का समय समाप्त निष्क्रिय कर सकते हैं फोन करके:

cursor.SetFlags(QueryFlags.NoCursorTimeout); 

अन्यथा यह 10 मिनट की निष्क्रियता के बाद बंद हो जाएगा।

MongoCursor<BsonDocument> cursor = myCollection 
            .Find(query) 
            .SetSortOrder(SortBy.Ascending("TrackingNumber")) 
            .SetFlags(QueryFlags.NoCursorTimeout); 
+1

यदि आप कर्सर को अंतिम तत्व में निकालना नहीं चाहते हैं, तो यह मोन्गो में मेमोरी लीक का कारण बन जाएगा। – Nashenas

+0

आप बैच आकार भी बदल सकते हैं (http://stackoverflow.com/a/24200795/420867 के अनुसार - यह एक पायथन प्रश्न है लेकिन सी # मोंगो ड्राइवर के साथ भी यह संभव होना चाहिए) – drevicko

2

इसके अलावा JohnnyHK का जवाब स्पष्ट है, इस वाक्य रचना है। इसका उपयोग करके:

cursor.Options.NoCursorTimeout = true; 
0

मैं MongoDB.Driver संस्करण 2.4.4 और IFindFluentSetFlags विधि युक्त नहीं है का उपयोग कर रहा:

Reference

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