2012-05-23 11 views
14

पर ऑपरेटिंग मुझे यहां कोई समस्या है। मैं अपने नोड जेएस फ़ाइल में अपने मोंगोडीबी से पारंपरिक संबंधपरक डीबी के लिए कुछ पसंद करके पूछना चाहता हूं। समस्या यह है कि मैं जिस चीज को पसंद करना चाहता हूं वह एक शाब्दिक नहीं है ... यह एक चर है! मुझे अभी तक ऐसा करने का कोई अच्छा तरीका नहीं मिला है। यहाँ "durrr पहले की कोशिश" शॉट मैंने इसे ले लिया था:नोड जेएस में रेगेक्स के साथ मोंगो क्वेरी एक VARIABLE

var result = postData.replace(/\+/g,' ').substring(5); 
db.testlogwiki.find({"line_text" : /result/ }; 
//predictably only matches to the literal "result" as opposed to my variable 

testlogwiki मोंगो में किया जाता है ... मैं इसे चल रहा है और इस का शाब्दिक अर्थ "line_text" युक्त "परिणाम" के साथ प्रविष्टियों db से मच करता है।

यह एक बहुत ही सरल सवाल की तरह लगता है ...

उत्तर

33

इस एक का प्रयास करें:

db.testlogwiki.find({"line_text" : new RegExp(result) }; 
+0

आप एक संत हैं। जब मैं घर जाता हूं तो यह स्वीकार करेगा (मेरे पास एक समय है जिसमें मैं स्वीकार नहीं कर सकता)। – PinkElephantsOnParade

+0

अब आप ऊपर उठाने में सक्षम होना चाहिए :) –

+2

आशा है कि आपके चर में कोई रेगेक्स विशेष वर्ण नहीं है या यह असफल हो जाएगा! –

2

तुम भी $ regex विकल्प का उपयोग कर सकते हैं।

db.testlogwiki.find({ line_text: { $regex: result[, $options: 'i'] } }); 
4

दोनों

db.testlogwiki.find({"line_text" : new RegExp(result, 'i') }; // to make this case insensitive 

या

db.testlogwiki.find({ line_text: { $regex: result[, $options: 'i'] } }); 
0

अन्य सभी उत्तर काम करेंगे अपने इनपुट चर के आधार पर विफल हो सकता है

आप रेगुलर एक्सप्रेशन का उपयोग कर सकते के रूप में दूसरों है संकेत दिया लेकिन आप विशेष regex सी से बचना चाहिए haracters या अन्यथा यह असफल हो सकता है।

Lodash यह करने के लिए एक समारोह है

https://lodash.com/docs#escapeRegExp

db.COLLECTION.find({FIELD_NAME: new RegExp(_.escapeRegExp(VAR), 'i') }; (यदि आप इसे उपयोग नहीं कर रहे तो आप शायद हो सकता है, यह चीनी का एक बहुत है कि ES6 + कल्पना में भी नहीं है कहते हैं)

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