2015-05-21 6 views
8

मेरे पास कुछ सी # कोड है जो मोंगोडीबी ड्राइवर के पुराने 1.x संस्करण का उपयोग करता है जो MongoCollection.Save() विधि का उपयोग कर एक सामान्य बचत विधि प्रदान करता है। हालांकि 2.0 को अपग्रेड करने के बाद यह विधि समाप्त हो गई है और एक अद्यतन विधि के साथ प्रतिस्थापित किया गया है जिसके लिए ऑब्जेक्ट पर सभी अद्यतन फ़ील्ड निर्दिष्ट किए जाने की आवश्यकता है (जो कि सामान्य विधि के लिए स्पष्ट रूप से अच्छा नहीं है ...)पुराने .net चालक के लिए नया विकल्प MongoCollection.Save?

मैं कैसे कर सकता हूं 2.0 ड्राइवर में पुराने सेव विधि (यानी बस किसी ऑब्जेक्ट को अपडेट करने के लिए ऑब्जेक्ट में पास करें) की कार्यक्षमता रखें?

उत्तर

7

आप IsUpsert झंडा और एक आईडी क्वेरी के साथ ReplaceOneAsync उपयोग कर सकते हैं:

public async Task<ReplaceOneResult> Save(Hamster hamster) 
{ 
    var replaceOneResult = await collection.ReplaceOneAsync(
     doc => doc.Id == hamster.Id, 
     hamster, 
     new UpdateOptions {IsUpsert = true}); 
    return replaceOneResult; 
} 

आप को देखने के लिए कि क्या यह एक डालने या अद्यतन था ReplaceOneResult.MatchedCount देख सकते हैं।

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