2012-05-21 9 views
6

मेरे पास 3 स्ट्रिंग फ़ील्ड देश, प्रांत, शहर के साथ ऑब्जेक्ट्स हैं। उनमें शून्य या कुछ स्ट्रिंग नाम हो सकते हैं।सी # आधिकारिक ड्राइवर का उपयोग कर शून्य मूल्य के साथ बीसन दस्तावेज़ कैसे बनाएं?

मैं सभी डेटा को सटीक समान मानों से पूछना चाहता हूं।

var lookup = new QueryDocument 
{ 
    {"GeoPosition.City", userLocation.City}, 
    {"GeoPosition.Province", userLocation.Province}, 
    {"GeoPosition.Country", userLocation.Country} 
}; 

लेकिन अशक्त क्षेत्र दूर फेंक दिया गया था और दस्तावेज़ की तरह दिखता है:

{ 
    "GeoPosition.Province" : "WA", 
    "GeoPosition.Country" : "USA" 
} 

तो i '

उदाहरण के लिए मैं सभी डेटा जहां

City = null, 
Province = "WA", 
Country = "USA" 

मैं BsonDocument बनाया जरूरत मी

का उपयोग करने के लिए परीक्षण

मुझे अपवाद है कि पैरामीटर नल हो सकता है।

जैसा कि मैंने प्रलेखन में देखा है, यदि क्वेरी शून्य के बराबर होती है तो प्रश्न पूछने में कोई समस्या नहीं है। तो यह सी # ड्राइवर के साथ एक समस्या है। इस समस्या को हल करने के लिए कोई विचार?

उत्तर

8

आपके शहर परिवर्तक के डेटा प्रकार पर निर्भर करता है। यदि शहर परिवर्तनीय प्रकार का है BsonValue आप का उपयोग कर सकते हैं ?? सीधे ऑपरेटर:

BsonValue city = null; 
var query = Query.EQ("city", city ?? BsonNull.Value); 
Console.WriteLine(query.ToJson()); 

अपने शहर चर प्रकार स्ट्रिंग की है, तो आप एक अतिरिक्त रूपांतरण संकलक खुश करने के लिए डाली की जरूरत है:

string city = null; 
var query = Query.EQ("city", (BsonValue)city ?? BsonNull.Value); 
Console.WriteLine(query.ToJson()); 
0

मुझे लगता है कि आप BsonDocuments के साथ काम कर रहे हैं और सी # कक्षाएं नहीं। इसके कारण, शून्य मानों के लिए, आपको डेटाबेस में और क्वेरी में शून्य मानों का प्रतिनिधित्व करने के लिए BsonNull.Value का उपयोग करने की आवश्यकता है।

+0

पता नहीं कैसे इस मामले में यह उपयोग करने के लिए है। उपयोगकर्ता स्थान की तरह कुछ लिखो। City??BsonNull.Value एक ही प्रकार के नहीं हैं। बहुत आसान तरीका होना चाहिए कि मैं अभी नहीं देखता। –

+0

इसे आज़माएं: क्वेरी.ईक्यू ("जियोपोजिशन.सिटी", बीसनवेल्यू। क्रिएट (यूजर लोकेशन.सिटी)) –

+0

क्रेग, अगर उपयोगकर्ता स्थान। सीटी शून्य है तो कोई त्रुटि फेंकता है। – kingdango

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