"লাইক" দিয়ে মঙ্গোডিবি কীভাবে জিজ্ঞাসা করবেন?


1436

আমি এসকিউএলের প্রশ্নের সাথে কিছু জিজ্ঞাসা করতে চাই like:

SELECT * FROM users  WHERE name LIKE '%m%'

আমি মঙ্গোডিবিতে কীভাবে এটি অর্জন করব? আমি একটি অপারেটর খুঁজে পাচ্ছি না likeযে ডকুমেন্টেশন


7
উন্নত ক্যোয়ারী - নিয়মিত এক্সপ্রেশন: MongoDB এর ডক্স দেখতে mongodb.org/display/DOCS/...
douyw

7
আপনার প্রশ্নের মতো লাইক-অপারেটর ট্যাগের 5জন্য কমপক্ষে ভোট রয়েছে । আমি বিনীত অনুরোধ আপনার প্রস্তাবিত গেল SQL- মতো হিসেবে সমার্থক ?
কেরমিট

3
এই লিঙ্কটি আপনাকে goo.gl/gdTYK8
দিলীপ কেআর সিং

উত্তর:


1945

এটি হতে হবে:

db.users.find({"name": /.*m.*/})

অথবা সাদৃশ্যপূর্ণ:

db.users.find({"name": /m/})

আপনি এমন কিছু সন্ধান করছেন যা "মি" কোথাও রয়েছে (এসকিউএল এর ' %' অপারেটরটি রেজএক্সপ্যাক্সের সমতুল্য .*), স্ট্রিংয়ের শুরুতে "মি" নোঙ্গর দেওয়া এমন কিছু নয়।

দ্রষ্টব্য: মংডোব নিয়মিত এক্সপ্রেশন ব্যবহার করে যা স্কেল-এ "LIKE" এর চেয়ে বেশি শক্তিশালী। নিয়মিত এক্সপ্রেশন দিয়ে আপনি যে কোনও প্যাটার্ন কল্পনা করতে পারেন তা তৈরি করতে পারেন।

নিয়মিত অভিব্যক্তি সম্পর্কিত আরও তথ্যের জন্য এই লিঙ্কটি দেখুন https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions


96
রেজেক্স দ্বারা ব্যয় করা ব্যয়বহুল?
ফ্রিউইন্ড

147
আসলে, এটি নির্ভর করে। যদি ক্যোয়ারী কোনও সূচক ব্যবহার না করে এবং অবশ্যই একটি টেবিল স্ক্যান করতে পারে তবে তা অবশ্যই ব্যয়বহুল। আপনি যদি 'রেগেক্স' ক্যোয়ারী দিয়ে শুরু করেন তবে তা সূচক ব্যবহার করতে পারে। কী ঘটছে তা বোঝাতে একটি ব্যাখ্যা চালানো সেরা Best
কাইল ব্যাঙ্কার

35
স্ট্রিংয়ের শুরুতে নোঙ্গর করা না হলে এটি কিছুটা ব্যয়বহুল। তবে তারপরে আবার LIKEএসকিউএল-তে একটি প্রশ্ন রয়েছে।
এমিলি

4
সুতরাং যতক্ষণ না এটি স্ট্রিংয়ের শুরুতে নোঙ্গর করা ঠিক আছে? ঠিক আছে তাহলে. তার অর্থ কি আমাদের ^
user4951

44
আমি রেজেেক্স আমি যুক্ত করবjavascript db.users.find({ "name": { $regex: /m/i } })
ডোরন সেগাল

368
db.users.insert({name: 'paulo'})
db.users.insert({name: 'patric'})
db.users.insert({name: 'pedro'})

db.users.find({name: /a/})  //like '%a%'

আউট: পাওলো, প্যাট্রিক

db.users.find({name: /^pa/}) //like 'pa%' 

আউট: পাওলো, প্যাট্রিক

db.users.find({name: /ro$/}) //like '%ro'

আউট: পেড্রো


সুন্দর উদাহরণ! আমি স্থানের সাথে চেক এন্ড সন্ধান করছি এবং এটি :) / $ /
ফুওং

আপনি নামের জন্য সমস্ত এন্ট্রিগুলি কীভাবে খুঁজে পাবেন? বা এসকিউএল * এর জন্য ওয়াইল্ডকার্ড? এমন কিছু select name from users;যা কেবলমাত্র সমস্ত ব্যবহারকারীর তালিকা করে?
anon58192932

1
@ anon58192932 "ব্যবহারকারী" নামের একটি সারণীতে কেবল "নাম" ক্ষেত্রের সমস্ত এন্ট্রি প্রদর্শন করতে আপনি যে ক্ষেত্রগুলির মূল্য চান তা নির্ধারণ করে আপনি প্রকল্প () পদ্ধতিটি ব্যবহার করতে পারেন 1. প্রকল্পে বর্ণিত ক্ষেত্রগুলি () হবে না _id ব্যতীত প্রাপ্ত _id ক্ষেত্রটি ডিফল্টরূপে মুদ্রিত হয় যা আপনি প্রকল্পের (_) পদ্ধতিতে _id এর জন্য 0 মান রেখে দমন করতে পারেন। এর মতো কিছু - db.collection.find ()। প্রকল্প ({নাম: 1, _id: 0}) .toArray (ফাংশন (ত্রুটি, ডক্স) {কনসোল.লগ (ডক্স); কলব্যাক (ডক্স);}); এটি উল্লেখ করুন - ডকস.মংগডব.ম্যানুয়াল
টিউটোরিয়াল

282

ভিতরে

  • পাইথন ব্যবহার করে পাইমঙ্গো
  • মঙ্গুজ নোড.জেএস ব্যবহার করে
  • জঙ্গো , জাভা ব্যবহার করে
  • এমগো , গো ব্যবহার করে

আপনি করতে পারেন:

db.users.find({'name': {'$regex': 'sometext'}})

2
এটি সংবেদনশীল অনুসন্ধানের জন্য দুর্দান্ত কাজ করে, আপনি কি দয়া করে আমাকে বলতে পারেন যে আমি কীভাবে সংবেদনশীল অনুসন্ধান সম্পাদন করতে এটি কাজ করতে পারি?
তাহির ইয়াসিন

কিসের জন্য রেজেক্স হবে%sometext%
তাহির ইয়াসিন

64
@ তাহিরয়াসিন যদি আপনি এখনও ভাবছেন, কেস-সংবেদনশীল অনুসন্ধান এইভাবে করা হবে:db.users.find({'name': {'$regex': 'sometext', '$options': 'i'}})
সমুদ্রপ্রেমী

আমি এমএমগো সহজভাবে কোড ব্যবহার করে গোলংয়ের সমাধান করেছি, নির্বাচক: = বিসন.এম techn "টেকনিশিয়ান": বিসন.এম {"$ রেজেক্স": টেক}}
সানডুন প্রিয়াঙ্কা

1
এর মতো মনে হয় গ্রহণযোগ্য উত্তর হওয়া উচিত। এটি বর্তমানে সবচেয়ে সহজ এবং সবচেয়ে মার্জিত
ব্রেট 84c

88

পিএইচপি-তে আপনি নিম্নলিখিত কোডগুলি ব্যবহার করতে পারেন:

$collection->find(array('name'=> array('$regex' => 'm'));

4
পাইথন + মঙ্গোইনজিন: লোক = লোক.জেক্টস.রাউ_কিউরি ({'নাম': {'ge রেজেক্স': 'এম'}})
পাঁচচোর

1
যদি আপনার RegEx মানটি ব্যবহারকারীর ইনপুট থেকে উদ্ভূত হয় (যেমন একটি ফিল্টার ফর্ম) এবং আপনি মানটি নিজেই RegExp হিসাবে নেওয়া না চান তবে আপনার এটিতে প্রেগ_কোট () প্রয়োগ করা উচিত।
ফিলিপ রিবার

2
আমি কেবল এটি উপলব্ধি করেছি, তবে এটি আসলে ভুল উত্তর, যদিও এটি উপ-অনুকূল কাজ করে, আপনার পরিবর্তে মোগোরেজেক্সের মাধ্যমে আসল BSON রেজেক্স অবজেক্টটি ব্যবহার করা উচিত, ge রেজেক্সের কিছু নির্দিষ্ট কমান্ডের সাথে সামঞ্জস্যের সমস্যা রয়েছে
সাম্মায়

এই বাক্য গঠনটি কার্যকর হয় যদি মানটি একটি ভেরিয়েবলে সংরক্ষণ করা হয়, সুতরাং ক্যোয়ারীটি (রুবিতে) হিসাবে লেখা যেতে পারে:$collection.where(field => {"$regex" => value})
ডনি কর্নিয়া

তবে আপনি অ্যারে আক্ষরিক ব্যবহার করতে পারবেন না কেন?
আল্পার

53

আপনি মঙ্গোতে এটির জন্য রেজেক্স ব্যবহার করবেন।

উদাহরণ: db.users.find({"name": /^m/})


29
আমি মনে করি এটি কেবলমাত্র "মি" দিয়ে শুরু হওয়া নামের মান সহ ডকুমেন্টগুলি দেখায়
জ্যাকএস

53

ইতিমধ্যে অনেক উত্তর আছে। আমি রেজেক্সের সাথে স্ট্রিং অনুসন্ধানের জন্য বিভিন্ন ধরণের প্রয়োজনীয়তা এবং সমাধান দিচ্ছি।

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

রয়েছে string

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

না উপস্থিত রয়েছে কি না stringশুধুমাত্র Regex সঙ্গে

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'}})

এটিকে বুকমার্ক হিসাবে রাখুন এবং আপনার প্রয়োজন হতে পারে এমন অন্যান্য পরিবর্তনের জন্য একটি রেফারেন্স রাখুন ।


37

আপনার 2 টি পছন্দ রয়েছে:

db.users.find({"name": /string/})

অথবা

db.users.find({"name": {"$regex": "string", "$options": "i"}})

সংক্ষিপ্ত সংবেদনশীল ব্যবহারের জন্য বিকল্পগুলির মধ্যে "আই" এর মতো দ্বিতীয় বিকল্প আপনার কাছে রয়েছে। এবং "স্ট্রিং" সম্পর্কে, আপনি উদাহরণস্বরূপ "। স্ট্রিং। " (% স্ট্রিং%), বা "স্ট্রিং। *" (স্ট্রিং%) এবং "। * স্ট্রিং) (% স্ট্রিং) ব্যবহার করতে পারেন। আপনি নিয়মিত এক্সপ্রেশন ব্যবহার করতে পারেন আপনি যেমন চান.

উপভোগ করুন!


34

নোড.জেএস ব্যবহার করা হলে , এটি বলছে যে আপনি এটি লিখতে পারেন:

db.collection.find( { field: /acme.*corp/i } );
//or
db.collection.find( { field: { $regex: 'acme.*corp', $options: 'i' } } );

এছাড়াও , আপনি এটি লিখতে পারেন:

db.collection.find( { field: new RegExp('acme.*corp', 'i') } );

রুবিতে অনুরূপ বাক্য গঠন:collection.where(field => Regexp.new(value))
ডনি করনিয়া

24

ইতিমধ্যে আপনি উত্তরগুলি পেয়েছেন তবে কেস সংবেদনশীলতার সাথে রেজেক্সের সাথে মেলে

আপনি নিম্নলিখিত কোয়েরি ব্যবহার করতে পারেন

db.users.find ({ "name" : /m/i } ).pretty()

iমধ্যে /m/iকেস insensitivity ইঙ্গিত করে এবং .pretty()একটি আরো সুন্দর আউটপুট প্রদান করে


তবে আমি যদি এখানে গতিশীলভাবে মান নির্ধারণ করতে চাই তবে
কেএস

@ কুলদীপকোরঙ্গ আপনি 'এম' এর জায়গায় যে কোনও গতিশীল মান রাখতে পারেন। তুমি কি এটাই চাও.
The6thSense

var search="feacebook"সুতরাং আমি কীভাবে @ থিয়েথসেন্স এর নীচে সেট করতে পারি হ্যাঁ, তবে db.users.find ({ "name" : /search/i } )?
কেএস

@ কুলদীপকোরঙ্গ আপনি মূল্য নির্ধারণ করেছেন।
The6thSense

1
@KuldeepKoranga stackoverflow.com/questions/7790811/... এই সাহায্য করে
The6thSense


13

আপনি 2.6 মঙ্গডব এর নতুন বৈশিষ্ট্যটি ব্যবহার করতে পারেন:

db.foo.insert({desc: "This is a string with text"});
db.foo.insert({desc:"This is a another string with Text"});
db.foo.ensureIndex({"desc":"text"});
db.foo.find({
    $text:{
        $search:"text"
    }
});

6
দ্রষ্টব্য, এএফএইকে মঙ্গোদবের পাঠ্য অনুসন্ধান কেবলমাত্র ডিফল্টরূপে পুরো শব্দগুলিতে কাজ করে, সুতরাং এটি "এটি পাঠ্যের সহিত একটি স্ট্রিং" এর মতো মানগুলির সাথে মিলবে তবে "এটি সাবটেক্সট সহ একটি স্ট্রিং" নয়। সুতরাং এটি স্কাইলের "লাইক" অপারেটরের মতো নয়।
রকেটমনকিগুলি 10:38

@ রকেটমনকিগুলি এটি সত্য .. "লাইক অপারেটর" এর মতো কোনও কিছুর জন্য আপনি $ রেজেক্স মোঙ্গো অপারেটর ব্যবহার করবেন।
cmarrero01

13

ইন nodejs প্রকল্প এবং ব্যবহার নকুল ব্যবহার ক্যোয়ারী ভালো লেগেছে

var User = mongoose.model('User');

var searchQuery={};
searchQuery.email = req.query.email;
searchQuery.name = {$regex: req.query.name, $options: 'i'};
User.find(searchQuery, function(error, user) {
                if(error || user === null) {
                    return res.status(500).send(error);
                }
                return res.status(200).send(user);
            });

আমি কীভাবে ক্যোয়ারির মতো ব্যবহার করতে পারি? আমি এটি চেষ্টা করেছি কিন্তু কাজ করছি না:searchQuery.product_name = '/'+req.query.search.value+'/i';
মুহাম্মদ শাহজাদ

এর মতো চেষ্টা করতে পারেন:searchQuery.product_name= {$regex: req.query.search.value, $options: 'i'};
শায়েশ রায়

তুমি আমার জীবন বাঁচাও আপনি কি প্লিজ কিছুটা ব্যাখ্যা করতে পারবেন $ রেজেক্স এবং? বিকল্পগুলি কী?
মুহাম্মদ শাহজাদ

if(req.query.search.value){ searchQuery.product_name = {$regex: req.query.search.value, $options: 'i'}; searchQuery.sale_amount = {$regex: req.query.search.value, $options: 'i'}; searchQuery.sale_person = {$regex: req.query.search.value, $options: 'i'}; searchQuery.department_name = {$regex: req.query.search.value, $options: 'i'}; searchQuery.sale_date = {$regex: req.query.search.value, $options: 'i'}; }আপনি দয়া করে দেখতে পারেন কেন এটি কাজ করছে না?
মুহাম্মদ শাহজাদ

ভাল $regex: 'value' আপনার অনুসন্ধানের মান এবং জন্য রেগুলার এক্সপ্রেশন উৎপন্ন $options: 'i'মানে কেস অবশ । আপনি বিভিন্ন সম্পত্তির জন্য একই মান ব্যবহার করার কারণে এবং আপনার ডাটাবেস সংগ্রহের সাথে পূরণ করা উচিত নয় এমন শর্ত হিসাবে আপনার কোড কাজ করে নি ।
শৈশব রায়

12

পিএইচপি মঙ্গোর জন্য লাইক।
পিএইচপি মঙ্গোর মতো আমার বেশ কয়েকটি সমস্যা ছিল। আমি দেখতে পেয়েছি যে রেজেক্স প্যারামগুলিকে একত্রিত করে কিছু পরিস্থিতিতে পিএইচপি মঙ্গো ক্ষেত্র শুরু করে তা খুঁজে পেতে সহায়তা করে । আমি অনুভব করেছি যে আমি এখানে আরও জনপ্রিয় থ্রেডে অবদান রাখতে পোস্ট করব

যেমন

db()->users->insert(['name' => 'john']);
db()->users->insert(['name' => 'joe']);
db()->users->insert(['name' => 'jason']);

// starts with
$like_var = 'jo';
$prefix = '/^';
$suffix = '/';
$name = $prefix . $like_var . $suffix;
db()->users->find(['name' => array('$regex'=>new MongoRegex($name))]);
output: (joe, john)

// contains
$like_var = 'j';
$prefix = '/';
$suffix = '/';
$name = $prefix . $like_var . $suffix;
db()->users->find(['name' => array('$regex'=>new MongoRegex($name))]);

output: (joe, john, jason)

পূর্ববর্তী উত্তর এবং মতামত অনুসারে - পাঠ্য (সূচীকরণ) অনুসন্ধানটি bench রেজেক্স পদ্ধতির সাথে তুলনা করে বেনমার্কের সাথে আরও ভাল সমাধান দেয়। রেফারেন্সের জন্য এই লিঙ্কটি stackoverflow.com/questions/10610131/… দেখুন । পিএইচপি এবং মঙ্গোডিবি দিয়ে $ পাঠ্য সূচী পদ্ধতিটি প্রয়োগ করা সম্ভব
সংকর মুনিয়াপ্পা

12

ভেরিয়েবলগুলির সাথে টেম্পলেট লিটারালগুলি ব্যবহার করে:

{"firstname": {$regex : `^${req.body.firstname}.*` , $options: 'si' }}


এটি প্রারম্ভিক হওয়া থেকে সন্ধানী - যদি "প্রথম নাম" তে টেস্টলাস্ট থাকে এবং যদি আমি "শেষ" দ্বারা অনুসন্ধান করি তবে এটি ফলাফল দেবে না।
বিকাশ চৌহান

11

মঙ্গোডিবি কম্পাসের সাহায্যে আপনার কঠোর মোড সিনট্যাক্স ব্যবহার করা দরকার:

{ "text": { "$regex": "^Foo.*", "$options": "i" } }

(মঙ্গোডিবি কম্পাসে আপনার "পরিবর্তে এটি ব্যবহার করা গুরুত্বপূর্ণ ')


10

যে কোনও জেএস স্ক্রিপ্ট তৈরি করতে আপনি যেখানে স্টেটমেন্টটি ব্যবহার করতে পারেন:

db.myCollection.find( { $where: "this.name.toLowerCase().indexOf('m') >= 0" } );

তথ্যসূত্র: http://docs.mongodb.org/manual/references/operator/ कहीं/


9
$whereঅত্যন্ত অদক্ষ। পূর্ণ সংগ্রহের স্ক্যান করুন :(
সুশান্ত গুপ্ত

আহ, কোনও সমস্যা নেই, আমি ঠিক
সেভাবেই

10

এসকিউএল-তে ' লাইক ' ক্যোয়ারীটি এমন দেখাচ্ছে:

select * from users where name like '%m%'

মঙ্গোডিবি কনসোলে এটি দেখতে এমন দেখাচ্ছে:

db.users.find({"name": /m/})     // Not JSON formatted

db.users.find({"name": /m/}).pretty()  // JSON formatted

সংযোজন pretty()পদ্ধতিতে এমন সমস্ত স্থানে যেখানে ফর্ম্যাটযুক্ত জেএসওএন কাঠামো তৈরি করা হবে যা আরও পঠনযোগ্য।


10

Regex ব্যয়বহুল প্রক্রিয়া।

আরেকটি উপায় হ'ল পাঠ্যের সূচি তৈরি করা এবং তারপরে এটি ব্যবহার করে অনুসন্ধান করা $search

আপনি সন্ধানযোগ্য করতে চান এমন ক্ষেত্রগুলির একটি পাঠ্য সূচি তৈরি করুন:

db.collection.createIndex({name: 'text', otherField: 'text'});

পাঠ্য সূচীতে একটি স্ট্রিং অনুসন্ধান করুন:

db.collection.find({
  '$text'=>{'$search': "The string"}
})

নিখুঁত সমাধান ... রেজেক্সগুলি ব্যয়বহুল হওয়ার উপায়। 20 মি ডকুমেন্টের একটি ডেটা সেট নিয়ে কাজ করা এবং পারফরম্যান্সের পার্থক্যটি খুব খুব লক্ষণীয় (যা একটি সংক্ষিপ্ত বিবরণ)
নিভেনসুকচরণ

1
প্রকৃতপক্ষে, এটি কেবল পুরো শব্দের জন্যই কাজ করে, ডকস.মঙ্গডবি.কম
টমাস এবার্ট

8

গো এবং এমজিও ড্রাইভারটিতে:

Collection.Find(bson.M{"name": bson.RegEx{"m", ""}}).All(&result)

যেখানে ফলাফল টাইপ করার পরে চাওয়া স্ট্রাক্ট উদাহরণ


2
pls আক্ষরিক মধ্যে অপ্রচলিত ক্ষেত্র এড়ানোর জন্য, bson:RegEx{Pattern:"m", Options:"i"}পরিবর্তে করুন
বিটভোক

8

নীচের মত মিলে যাওয়া নিয়মিত এক্সপ্রেশন ব্যবহার করুন। 'আমি' কেস সংবেদনশীলতা দেখায়।

var collections = mongoDatabase.GetCollection("Abcd");

var queryA = Query.And(
         Query.Matches("strName", new BsonRegularExpression("ABCD", "i")), 
         Query.Matches("strVal", new BsonRegularExpression("4121", "i")));

var queryB = Query.Or(
       Query.Matches("strName", new BsonRegularExpression("ABCD","i")),
       Query.Matches("strVal", new BsonRegularExpression("33156", "i")));

var getA = collections.Find(queryA);
var getB = collections.Find(queryB);

6

কোয়েরির মত নীচের মত প্রদর্শিত হবে

db.movies.find({title: /.*Twelve Monkeys.*/}).sort({regularizedCorRelation : 1}).limit(10);

স্কেল রিঅ্যাকটিভ মঙ্গো এপিআই এর জন্য,

val query = BSONDocument("title" -> BSONRegex(".*"+name+".*", "")) //like
val sortQ = BSONDocument("regularizedCorRelation" -> BSONInteger(1))
val cursor = collection.find(query).sort(sortQ).options(QueryOpts().batchSize(10)).cursor[BSONDocument]

6

দেখে মনে হচ্ছে জাভাস্ক্রিপ্ট /regex_pattern/প্যাটার্ন পাশাপাশি মোঙ্গো {'$regex': 'regex_pattern'}প্যাটার্ন উভয়ই ব্যবহারের কারণ রয়েছে । দেখুন: মঙ্গোবিডি রেজেক্সেক্স সিনট্যাক্স বিধিনিষেধগুলি

এটি কোনও সম্পূর্ণ রেগেক্স টিউটোরিয়াল নয়, তবে উপরের একটি উচ্চ ভোটের অস্পষ্ট পোস্ট দেখে আমি এই পরীক্ষাগুলি চালাতে অনুপ্রাণিত হয়েছি ।

> ['abbbb','bbabb','bbbba'].forEach(function(v){db.test_collection.insert({val: v})})

> db.test_collection.find({val: /a/})
{ "val" : "abbbb" }
{ "val" : "bbabb" }
{ "val" : "bbbba" }

> db.test_collection.find({val: /.*a.*/})
{ "val" : "abbbb" }
{ "val" : "bbabb" }
{ "val" : "bbbba" }

> db.test_collection.find({val: /.+a.+/})
{ "val" : "bbabb" }

> db.test_collection.find({val: /^a/})
{ "val" : "abbbb" }

> db.test_collection.find({val: /a$/})
{ "val" : "bbbba" }

> db.test_collection.find({val: {'$regex': 'a$'}})
{ "val" : "bbbba" }

5

আপনি যদি স্প্রিং-ডেটা মংডব ব্যবহার করেন তবে আপনি এটি এইভাবে করতে পারেন:

String tagName = "m";
Query query = new Query();
query.limit(10);        
query.addCriteria(Criteria.where("tagName").regex(tagName));

4

মোঙ্গো শেল সমর্থন রেজিক্স হিসাবে, এটি সম্পূর্ণ সম্ভব।

db.users.findOne({"name" : /.*sometext.*/});

আমরা যদি জিজ্ঞাসাটি কেস-সংবেদনশীল হতে চাই তবে আমরা নীচে দেখানো মত "i" বিকল্পটি ব্যবহার করতে পারি:

db.users.findOne({"name" : /.*sometext.*/i});

4

আপনি যদি মঙ্গোতে 'লাইক' অনুসন্ধান করতে চান তবে আপনার এই ক্যোয়ারীটি ব্যবহার করে $ রেজেক্সের সাথে যাওয়া উচিত

db.product.find({name:{$regex:/m/i}})

আরও জন্য আপনি ডকুমেন্টেশন পাশাপাশি পড়তে পারেন। https://docs.mongodb.com/manual/reference/operator/query/regex/


4

সমষ্টিগত স্তরগুলি অনুসন্ধান (সূচী সহ !!!) ব্যবহার করুন:

db.collection.aggregate([{
        $project : {
            fieldExists : {
                $indexOfBytes : ['$field', 'string']
            }
        }
    }, {
        $match : {
            fieldExists : {
                $gt : -1
            }
        }
    }, {
        $limit : 5
    }
]);

চমৎকার! পুরো ডকুমেন্টটি মিলে যাওয়ার কোনও উপায় আছে কি? বা সমষ্টি ফ্রেমওয়ার্কটি এটি করতে একটি ফলোআপ কোয়েরি তৈরি করে? এই মুহুর্তে একটি ম্যাচের মত দেখাচ্ছে:{ "_id" : ObjectId("5aba5ad988385120a01b1ac2"), "fieldExists" : 4 }
Gianfranco পি।

প্রকল্পের পর্যায়ে কেবল আপনি কী চান তা প্রজেক্ট করুন
ভোকাইল

4

স্ট্রিং ডিপকপারমার, দিপাক, পরমার

db.getCollection('yourdb').find({"name":/^dee/})

আনস ডিপকপারমার

db.getCollection('yourdb').find({"name":/d/})

আনস ডিপকপারমার, দিপাক

db.getCollection('yourdb').find({"name":/mar$/})

আনস ডিপকপারমার, পারমার


2

মাইজিএসকিউএল কোয়েরিগুলি মঙ্গোডিবিতে অনুবাদ করার জন্য আমি একটি নিখরচায় সরঞ্জাম পেয়েছি। http://www.querymongo.com/ আমি বেশ কয়েকটি প্রশ্নের সাথে চেক করেছি। যেহেতু আমি দেখছি প্রায় সবগুলিই সঠিক। যে অনুযায়ী, উত্তর হয়

db.users.find({
    "name": "%m%"
});

2

মঙ্গোরেজেক্সকে হতাশ করা হয়েছে।
মঙ্গোডিবি \ বিএসওএন \ রেজেক্স ব্যবহার করুন

$regex = new MongoDB\BSON\Regex ( '^m');
$cursor = $collection->find(array('users' => $regex));
//iterate through the cursor

এটি লক্ষ করা গুরুত্বপূর্ণ যে এটি পিএইচপি-তে মঙ্গোরেজেক্স শ্রেণিকে বোঝায় । নোড সম্পর্কে এই প্রশ্নের খুব প্রাসঙ্গিক নয়। এটি সম্ভবত একটি মন্তব্য বা আরও ভাল হওয়া উচিত - পৃথক পোস্টে একটি স্ব-উত্তর প্রশ্ন।
বোয়াজ - মনিকা 14 ই

2
db.customer.find({"customerid": {"$regex": "CU_00000*", "$options": "i"}}).pretty()

যখন আমরা স্ট্রিং প্যাটার্নগুলি সন্ধান করি তখন সর্বদা উপরের প্যাটার্নটি ব্যবহার করা ভাল যেমন আমরা কেস সম্পর্কে নিশ্চিত নই। আশা করি এইটি কাজ করবে!!!

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