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


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.