2012-06-04 25 views
12

मैं रेगुलर एक्सप्रेशन का उपयोग करने के लिए Symfony 2.मैं सिद्धांत के मोंगोड ओडीएम के साथ नियमित अभिव्यक्तियों का उपयोग कैसे कर सकता हूं?

पर सिद्धांत के MongoDB ODM का उपयोग कर MongoDB क्वेरी करने के लिए मुझे पता है PHP mongo driver can do it कोशिश कर रहा हूँ। हालांकि, मुझे नहीं पता कि यह सिद्धांत के साथ कैसे करें।

क्या मैं एक ही कक्षा का उपयोग करता हूं? मैं सिम्फनी के भीतर से मोंगोरेगेक्स को कैसे संदर्भित करूं?

+0

। PHP http://stackoverflow.com/questions/36761669/symfony2-need-to-use-the-regular-expression-in-doctrines-mongodb-odm-to-check यही कारण है कि मैंने यह उत्तर दिया है उन लोगों के लिए जो इस बारे में चिंता कर सकते हैं। –

उत्तर

28

यह कुछ समय पहले doctrine-user मेलिंग सूची पर आया था। एक प्रश्न निर्माता का उपयोग करके

$documentRepository->findBy(array(
    'foo' => new \MongoRegex('/^bar/'), 
)); 

या यदि:: आप अपने ODM प्रश्नों में सीधे \MongoRegex वर्ग का उपयोग कर सकते

$queryBuilder->field('foo')->equals(new \MongoRegex('/^bar/')); 

ध्यान रखें कि सामने के लंगर डाले, केस-संवेदी regex पैटर्न में सक्षम हो जाएगा इंडेक्स का सबसे कुशलतापूर्वक उपयोग करें। Mongo docs में अधिक विस्तार से चर्चा की गई है।

+0

मुझे नए मोंगोडीबी \ बीएसओएन \ रेगेक्स क्लास का उपयोग करने की आवश्यकता है क्योंकि अब मोंगोरेगेक्स को हटा दिया गया है। मैं Symfony2 प्रोजेक्ट में इसका उपयोग कैसे कर सकता हूं। var_dump ($ regex); http://php.net/manual/en/mongodb-bson-regex.construct.php –

1

आप विस्तार How to use Reserved characters in createQueryBuilder and MongoRegix के लिए ढेर अतिप्रवाह पर सवाल,

इसके अतिरिक्त, जबकि/^ एक /,/^ एक का पालन कर सकते हैं। /, और/^ ए। $/समकक्ष तारों से मेल खाते हैं, उनके पास अलग-अलग प्रदर्शन विशेषताएं हैं। यदि कोई उचित अनुक्रमणिका मौजूद है तो ये सभी अभिव्यक्ति एक अनुक्रमणिका का उपयोग करती हैं; हालांकि,/^ ए। /, और/^ ए। $/धीमे हैं।/^ उपसर्ग से मेल खाने के बाद/a स्कैनिंग रोक सकता है। Mongo Docs Regix

कोई है जो MongoRegex उपयोग करने के लिए है कि के रूप में इस समाधान MongoRegex http://php.net/manual/en/class.mongoregex अनुसार depecated कर दिया गया है की कोशिश कर सकते पदावनत किया गया था अभ्यस्त नहीं करते