आपको इस रैपिंग में से किसी की भी आवश्यकता नहीं है। एक तारीख एक तारीख है :
var zeroth = {$or:[ {start: new Date(), {users:{$size:2}} ]};
अब निश्चित रूप से यदि आपके दस्तावेज़ में वे "तारीखें" वास्तव में "स्ट्रिंग्स" हैं और उचित नहीं हैं तारीख प्रकार तो यह आपकी समस्या है। और क्या आप वास्तव में उन मानों को ठीक करने की आवश्यकता है ताकि वे वास्तविक तिथियां हों।
यह किसी भी . पर लागू होता है भाषा कार्यान्वयन, जहां आपको मूल "तारीख" प्रकार के साथ काम करना चाहिए और ड्राइवर को आपके लिए रूपांतरण करने देना चाहिए।
कैसे निर्धारित करें कि फ़ील्ड एक स्ट्रिंग है या नहीं
वैसे स्पष्ट अंतर यह है कि जब आप मोंगो खोल में किसी दस्तावेज़ को देखते हैं, यदि यह वास्तविक बीएसओएन दिनांक प्रकार है तो यह इस तरह दिखेगा:
"start": ISODate("2014-03-31T08:47:48.946Z"),
यदि यह पर्याप्त स्पष्ट नहीं है तो $type
ऑपरेटर जिसे आप इस तरह की क्वेरी में उपयोग कर सकते हैं:
db.collection.find({ "start": { "$type": 2 } }).count()
यह नहीं भी है MongoDB जो ऐसा कर रहा है यदि यह एक स्ट्रिंग है, बल्कि एप्लिकेशन या आयात में खराब कार्यान्वयन है जो इसे बनाने से जिम्मेदार था। प्रारंभिक प्रतिक्रिया में जो बिंदु बनाए गए थे, वे सभी के बारे में थे।