2011-01-05 8 views
19

है, मैं उन रिकॉर्ड्स के लिए एक मोंगो संग्रह से पूछताछ करना चाहता हूं जिनके पास 'योजना' नामक फ़ील्ड के लिए कोई मान नहीं है, या स्पष्ट रूप से 'http' मान है 'योजना' के लिए। बहुत आसान लगता है, लेकिन यह समस्या पहले दिखाई देने से अधिक जटिल साबित हुई है।MongoDB क्वेरी: फ़ील्ड या तो मौजूद नहीं है या विशिष्ट मान

db.collection.find({'scheme': None}) रिटर्न के बाद से सभी रिकॉर्ड जहां 'योजना' अपरिभाषित है (कोई सूचकांक क्षेत्र), मैं शुरू में ग्रहण निम्नलिखित काम करेगा:

db.collection.find({'scheme': {'$in': ['http', None]}}) 

बहरहाल, यह मान, जिसमें 'योजना' अपरिभाषित है बाहर करने के लिए लगता है , इसलिए मैं केवल यह मान सकता हूं कि यह उन रिकॉर्ड्स की खोज कर रहा है जहां योजना या तो 'http' है, या स्पष्ट रूप से None होने के लिए परिभाषित किया गया है। यह थोड़ा उलझन में प्रतीत होता है, लेकिन हमारे पास यह है। मेरा दूसरा प्रयास निम्नलिखित था:

db.collection.find({'$or': [{'scheme': {'$exists': False}}, {'scheme': 'http'}]}) 

यह परिणाम भी शामिल नहीं करता है जहां योजना अनिर्धारित है। इस बार, मैं एक तर्कसंगत कारण के बारे में भी सोच नहीं सकता कि यह क्यों विफल रहा है।

कोई विचार यह क्यों विफल रहा है, और मैं इसे वांछित के रूप में कैसे काम कर सकता हूं?

धन्यवाद

संपादित करें: बस सोचा था कि मैं ध्यान दें होता है कि मैं पायथन (pymongo) है, जो None बताते हैं के माध्यम से इस पूछताछ कर रहा हूँ (अधिक जावास्क्रिप्ट का null)

+1

आपका कोड मेरे दिन बचाया गया है। धन्यवाद। – Chinni

+0

मैं विभिन्न उत्तरों का पालन कर रहा था लेकिन कोई भी काम नहीं किया। यह मेरे लिए काम किया। बहुत धन्यवाद। –

उत्तर

8

हल: यह जाहिरा तौर पर एक मुद्दा है मोंगोडब (1.4.4) के मेरे संस्करण का, 1.6.5 में समस्या हल हो गई है।

+0

तो वर्किंग वर्जन कौन सा है? दूसरा या $ या पहले वाला वाला दूसरा? धन्यवाद – Matroska

+0

क्षमा करें, केवल यह देखा (बहुत देर हो चुकी है!) जवाब वास्तव में दोनों है। – majackson