2013-09-29 6 views
6

मुझे एकाधिक टेक्स्ट फ़ील्ड के आधार पर दस्तावेज़ ढूंढने की आवश्यकता है।मोंगोस या क्वेरी

var term = new RegExp(req.query.search, 'i'); 
.find({ company_name: { $regex: term }}); 

उपर्युक्त कार्यों का उपयोग करना बहुत अच्छा है। हालांकि, जब मैं

.find(...).or([{ bio: { $regex: term }}]); 

का उपयोग करके एक अतिरिक्त फ़ील्ड जोड़ने का प्रयास करता है तो यह किसी भी रिकॉर्ड को पुनर्प्राप्त करने में विफल रहता है। मुझे कुछ और क्षेत्रों के लिए ऐसा करने की ज़रूरत है।

स्कीमा में अलग-अलग टेक्स्ट फ़ील्ड अनुक्रमित हैं, लेकिन एक बहु-क्षेत्रीय अनुक्रमणिका के रूप में नहीं। क्या यह बेहतर काम करेगा और यदि हां, तो क्या इसका कोई स्पष्ट उदाहरण है? जो दस्तावेज मैंने पाया वह काफी अस्पष्ट था।

कोई विचार?

उत्तर

9

एक सरणी कि or के लिए पारित किया है में दोनों क्षेत्रों रखो:

.find().or([{ company_name: { $regex: term }}, { bio: { $regex: term }}]); 

अलग एकल क्षेत्र अनुक्रमित आप क्या चाहते हैं के रूप में प्रत्येक or अवधि एक अलग प्रश्न के रूप में क्रियान्वित किया जाता है।

+0

सही मायने रखता है और मेरी समस्या को हल करता है। धन्यवाद – user2787799

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