মঙ্গোডিবিতে আমি কীভাবে 'নট লাইক' অপারেটরটি ব্যবহার করতে পারি


103

আমি এসকিউএল Likeঅপারেটরটি ব্যবহার করে ব্যবহার করতে পারি pymongo,

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

তবে আমি কীভাবে Not Likeঅপারেটর ব্যবহার করতে পারি ?

আমি চেষ্টা করেছিলাম

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

তবে ত্রুটি পেয়েছে:

অপারেশনফেলার: re এর একটি রেজেস থাকতে পারে না


4
আমি জানি এটি একটি সামান্য বিট দেরি তবে মঙ্গোডিবি 4.2 এ $notএবং $regexসংমিশ্রণে অপারেটরটি আমার পক্ষে কাজ করে বলে মনে হচ্ছে।
— b00r00x0

উত্তর:


145

ডক্স থেকে :

$ না অপারেটর $ রেজেক্স অপারেটরের সাথে ক্রিয়াকলাপ সমর্থন করে না। পরিবর্তে // ব্যবহার করুন বা আপনার ড্রাইভার ইন্টারফেসগুলিতে, নিয়মিত এক্সপ্রেশন অবজেক্ট তৈরি করতে আপনার ভাষার নিয়মিত অভিব্যক্তি ক্ষমতা ব্যবহার করুন। নীচের উদাহরণটি বিবেচনা করুন যা প্যাটার্ন ম্যাচ এক্সপ্রেশন ব্যবহার করে //:

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

সম্পাদনা (@ আইডবেন্টলে):

{$regex: 'ttt'}সাধারণত /ttt/মঙ্গোদব এর সমতুল্য , তাই আপনার ক্যোয়ারী হয়ে উঠবে:

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

সম্পাদনা 2 (@ কিউং হুন কিম):

ইন পাইথন , এক কাজ নিচে:

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

4
স্পষ্টভাবে {$regex: 'ttt'}বলতে /ttt/গেলে, সাধারণত মঙ্গোদব এর সমতুল্য , তাই আপনার ক্যোয়ারী হয়ে উঠবে db.test.find({c: {$not: /ttt/}}।
— idbentley

@ আইডবেন্টলে আপনাকে ধন্যবাদ আমি আপনার স্পষ্টির সাথে আমার উত্তর আপডেট করেছি।
— shx2

4
তোমাকে অনেক ধন্যবাদ. অন্য মানুষের জন্য, আমি ব্যবহার করেছি 'c':{'$not':re.compile('ttt')}। অবশ্যই, আপনার পুনরায় আমদানি করা দরকার
— কিংহুন কিম

দুর্দান্ত উত্তরগুলিতে আমি উত্তরটিও আপনার মন্তব্য যুক্ত করেছি।
— shx2

4
এটি $ নে এবং ge রেজেক্সের ক্ষেত্রে একই রকম বলে মনে হচ্ছে। কেউ কি এটি নিশ্চিত করতে পারে, বা কমপক্ষে এটি যুক্ত করতে পারে?
— ডি ব্রাউন

57

আপনি রেজেক্সের সাথে এটি করতে পারেন যার মধ্যে একটি শব্দ নেই। এছাড়াও, আপনি $options => iসংবেদনশীল অনুসন্ধানের ক্ষেত্রে ব্যবহার করতে পারেন ।

ধারণ করে না string

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

নির্ভুল ক্ষেত্রে সংবেদনশীল sens 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/

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.