c# - Filtering mongodb data -


मेरे पास निम्न मॉडल है:

आधार वर्ग:

  सार्वजनिक सार वर्ग पहचानने योग्य (निजी ऑब्जेक्ट आईडी; निजी स्ट्रिंग का नाम; संरक्षित पहचाने जाने योग्य () {id = ऑब्जेक्ट ईग्रेनेट न्यूइड (); } [बीएसओआईडी] सार्वजनिक ऑब्जेक्ट आईडी ({आईडी रिटर्न आईडी; } सेट {id = value; }} [BsonRequired] सार्वजनिक स्ट्रिंग नाम {get {return name; } सेट {name = value; }}}  

नाम अद्वितीय है।
एक चैनल वर्ग

  सार्वजनिक वर्ग चैनल: पहचाने जाने योग्य {निजी दिनांक समय निर्माण तिथि; निजी स्ट्रिंग यूआरएल; निजी डेली प्रोग्रामिंग दैनिक प्रोग्रामिंग; सार्वजनिक दैनिक प्रोग्रामिंग दैनिक प्रोग्रामिंग {रोज़ाना जारी करना; } सेट {dailyprograming = value; }} सार्वजनिक डेटटाइम क्रिएशनडेट {प्राप्त करें {रिटर्न निर्माण तिथि; } सेट {creationDate = value; }} सार्वजनिक स्ट्रिंग यूआरएल {get {return url; } सेट {url = value; }}}  

दैनिक कार्यक्रम नाम की संपत्ति को डीडीएममेय्य के रूप में संग्रहित दिनांक है:

  सार्वजनिक वर्ग दैनिकप्रलेखन: पहचाने जाने योग्य {सार्वजनिक दैनिक प्रोग्रामिंग () {दैनिकप्रोग्राम = नई सूची & lt; प्रोग्राम & gt; (30); } सार्वजनिक IList & lt; प्रोग्राम & gt; दैनिक प्रोग्राम्स {प्राप्त करें; सेट; }}  

कार्यक्रम:

  सार्वजनिक वर्ग कार्यक्रम: पहचानने योग्य {निजी दिनांकटाइम प्रोग्रामडेट; निजी स्ट्रिंग श्रेणी; निजी स्ट्रिंग विवरण; सार्वजनिक दिनांकटाइम कार्यक्रम तिथि {वापसी कार्यक्रम दिनांक प्राप्त करें; } सेट {programDate = value; }} सार्वजनिक स्ट्रिंग श्रेणी {वापसी श्रेणी प्राप्त करें; } सेट {category = value; }} सार्वजनिक स्ट्रिंग विवरण {get {return description; } सेट {description = value; अब, मैं विशिष्ट दिन के लिए विशिष्ट चैनल के प्रोग्राम को फ़िल्टर करना चाहूंगा:  
  सार्वजनिक दैनिक प्रोग्रामिंग GetProgramsForDate (स्ट्रिंग चैनल आईडी, स्ट्रिंग prgDate) {ऑब्जेक्ट आईडी = नया ऑब्जेक्ट (चैनलआईडी); IMongoQuery क्वेरी = क्वेरी। और (क्वेरी & lt; चैनल & ​​gt; .EQ (c = & gt; c.Id, id), क्वेरी & lt; दैनिकप्रोग्रामिंग & gt; .EQ (dp = & gt; dp.Name, prgDate)); Var परिणाम = डाटाबेस। गेटक्ल्यूशन & lt; डेलीप्रोग्रामिंग & gt; (संग्रहनाम)। खोज (क्वेरी)। पहलेऑर डीफॉल्ट (); वापसी परिणाम; }  

लेकिन यह मौजूदा डेटा कभी नहीं लौटाता है किसी तिथि के लिए चैनल के प्रोग्रामिंग कैसे पुनर्प्राप्त करें? आपके नमूने के अनुसार मैंने id = "54c00c65c215161c7ce2a77c" और

prgDate = "2212015"

फिर मैंने इस क्वेरी को बदल दिया है:

  var संग्रह = डेटाबेस। गेटक्ल्यूशन & lt; चैनल & ​​gt; ("test6") ; Var id = नया ऑब्जेक्ट ("54c00c65c215161c7ce2a77c"); Var क्वेरी = क्वेरी। और (क्वेरी & lt; चैनल & ​​gt; .EQ (c = & gt; c.Id, id), क्वेरी & lt; चैनल & ​​gt; .EQ (c = & gt; c.DailyPrograming.Name, "2212015")); Var परिणाम = संग्रह। खोजें (क्वेरी) .FirstOrDefault ();  

यह क्वेरी ठीक काम करती है

कुछ बिंदु:

आपका संग्रह प्रकार है चैनल not दैनिक प्रोग्रामिंग जब आपका संग्रह चैनल है, तो आपको क्वेरी & lt; चैनल & ​​gt; और नेस्टेड दैनिक प्रोग्रामिंग via क्वेरी & lt; चैनल & ​​gt; .EQ (c = & Gt; c.DailyPrograming.Name, "2212015")


Comments