लिए काम करता है @ मिगुएल-Savignano की प्रतिक्रिया में कोई गलती नहीं है। स्टैकओवरफ्लो के अनुसार "संपादित कतार पूर्ण है", यही कारण है कि मैंने एक संपादन सबमिट नहीं किया है।
उचित वाक्य रचना:
Username.or({username: @username}).or({email: @email})
एक अधिक संक्षिप्त समाधान:
{"$or"=>[{"username"=>@username}, {"email"=>@email}]}
मैं इस सवाल पाया के रूप में मैं था:
Username.or({username: @username}, {email: @email})
को मोंगो चयनकर्ता का समाधान हो जाएगा बनाने के लिए हल करने की कोशिश कर रहा है " या "प्रश्न।
यदि आप स्ट्रिंग या तत्वों में से किसी एक से मेल खाते हैं, तो आपको मोंगो '$' चयनकर्ता के साथ एक मोंगोइड क्वेरी लिखनी होगी।
उदाहरण के लिए, आपके पास एक विशिष्ट उपयोगकर्ता नाम और ईमेल की एक सरणी है। आप उन सभी परिणामों को वापस करना चाहते हैं जहां कम से कम एक फ़ील्ड उपयोगकर्ता नाम या सरणी के भीतर ईमेल में से किसी एक से मेल खाता है।
@username = "jess"
@emails = ["[email protected]", "[email protected]", "[email protected]"]
User.or({username: ""}, {email: {'$in': @emails}})
मोंगो चयनकर्ता का समाधान हो जाएगा करने के लिए:
{"$or"=>[{"first_name"=>""}, {"email"=>{:$in=>["[email protected]", "[email protected]", "[email protected]"]}}]}
- आप अपने डेटाबेस में 3 ईमेल के 2 के साथ
Users
है, तो चयनकर्ता 2.
- की गिनती वापस आ जाएगी यदि आपके पास
User
username
"जेस" और 3 अतिरिक्त Users
प्रत्येक दिए गए ईमेल में से प्रत्येक के साथ है, तो चयनकर्ता 4 की गिनती वापस कर देगा।
स्कॉप्स में आपको अभी भी 'any_of' का उपयोग करना होगा अन्यथा यह एक वाक्यविन्यास त्रुटि फेंक देगा। – aledalgrande
पोस्ट किया गया लिंक '.or' और न ही 'any_of' के बारे में कुछ भी नहीं बताता है, कृपया [यहां] देखें (https://github.com/mongodb/mongoid/blob/master/lib/mongoid/criteria/queryable/selectable। आरबी) विस्तृत दस्तावेज़ीकरण और कार्यान्वयन देखने के लिए – silva96
आप scopes में self.or का भी उपयोग कर सकते हैं (क्योंकि 'या' रूबी में एक कीवर्ड है) – Shiyason