मैं MongoDB में 'नॉट लाइक' ऑपरेटर का उपयोग कैसे कर सकता हूं


98

मैं का उपयोग कर SQL Likeऑपरेटर का उपयोग कर सकते हैं pymongo,

db.test.find({'c':{'$regex':'ttt'}})

लेकिन मैं Not Likeऑपरेटर का उपयोग कैसे कर सकता हूं ?

मैंने कोशिश की

db.test.find({'c':{'$not':{'$regex':'ttt'}})

लेकिन त्रुटि मिली:

OperationFailure: $ में regex नहीं हो सकता


1
मुझे पता है कि यह थोड़ा छोटा है लेकिन MongoDB 4.2 में $notऔर $regexसंयोजन में ऑपरेटर मेरे लिए काम करता है।
b00r00x0

जवाबों:


138

से डॉक्स :

$ नहीं ऑपरेटर $ regex ऑपरेटर के साथ संचालन का समर्थन नहीं करता है। इसके बजाय // या आपके ड्राइवर इंटरफेस में, नियमित अभिव्यक्ति ऑब्जेक्ट बनाने के लिए अपनी भाषा की नियमित अभिव्यक्ति क्षमता का उपयोग करें। निम्नलिखित उदाहरण पर विचार करें जो पैटर्न मैच अभिव्यक्ति का उपयोग करता है //:

db.inventory.find( { item: { $not: /^p.*/ } } )

EDIT (@idbentley):

{$regex: 'ttt'}आम तौर पर /ttt/मोंगोडब के बराबर है , इसलिए आपकी क्वेरी बन जाएगी:

db.test.find({c: {$not: /ttt/}}

EDIT2 (@KyungHoon Kim):

में अजगर , एक काम करता है नीचे:

'c':{'$not':re.compile('ttt')}

2
स्पष्ट होने के लिए, {$regex: 'ttt'}आम तौर पर /ttt/मोंगोडब के बराबर होता है, इसलिए आपकी क्वेरी बन जाएगी db.test.find({c: {$not: /ttt/}}
idbentley

@idbentley धन्यवाद। मैंने आपके स्पष्टीकरण के साथ अपना उत्तर अपडेट कर दिया।
shx2

1
बहुत बहुत धन्यवाद। अन्य लोगों के लिए, मैंने उपयोग किया 'c':{'$not':re.compile('ttt')}। बेशक, आपको आयात की आवश्यकता है
KyungHoon Kim

महान। मैंने उत्तर के लिए आपकी टिप्पणी को उत्तर के लिए भी जोड़ा।
shx2

1
$ नेग और $ रेगेक्स के साथ भी यही मामला लगता है। क्या कोई इसकी पुष्टि कर सकता है, या कम से कम इसे जोड़ सकता है?
DBrown

55

आप रेगेक्स के साथ कर सकते हैं जिसमें एक शब्द नहीं है। इसके अलावा, आप $options => iअसंवेदनशील खोज के मामले के लिए उपयोग कर सकते हैं ।

कंटेनर नहीं है string

db.collection.find({name:{'$regex' : '^((?!string).)*$', '$options' : 'i'}})

सटीक मामला असंवेदनशील string

db.collection.find({name:{'$regex' : '^string$', '$options' : 'i'}})

इसके साथ आरंभ होता है string

db.collection.find({name:{'$regex' : '^string', '$options' : 'i'}})

इसी के साथ समाप्त होता है string

db.collection.find({name:{'$regex' : 'string$', '$options' : 'i'}})

शामिल string

db.collection.find({name:{'$regex' : 'string', '$options' : 'i'}})

इसे एक बुकमार्क के रूप में रखें, और किसी भी अन्य परिवर्तन के लिए एक संदर्भ जिसे आपको आवश्यकता हो सकती है। http://www.cheatography.com/davechild/cheat-sheets/regular-expressions/

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.