mongodb - কিভাবে মংডোডিবি "লাইক" দিয়ে জিজ্ঞাসা করবেন?




mongodb-query sql-like (20)

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

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

মংডোডবিতে একই কাজ করবেন কিভাবে?
আমি documentations like একটি অপারেটর খুঁজে পাচ্ছি না।


MongoDB কম্পাসের সাহায্যে আপনাকে কঠোর মোড সিনট্যাক্স ব্যবহার করতে হবে:

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

(মংডোডিবি কম্পাসে, এটির পরিবর্তে আপনি " পরিবর্তে " ব্যবহার করেন)


MongoRegex অব্যবহৃত হয়েছে।
MongoDB \ BSON \ Regex ব্যবহার করুন

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

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

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

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

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

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

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

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

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

অথবা

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

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

উপভোগ করুন!


আপনি mongo যে জন্য regex ব্যবহার করবে।

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


আপনি কোন JS স্ক্রিপ্ট নির্মাণ করতে যেখানে বিবৃতি ব্যবহার করতে পারেন:

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

রেফারেন্স: http://docs.mongodb.org/manual/reference/operator/where/


আপনি যদি মোগোতে 'লাইক' অনুসন্ধান চান তবে এই প্রশ্নটি ব্যবহার করে আপনি $ regex দিয়ে যান

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

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


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

আপনি Regex সঙ্গে শব্দ করতে পারেন যা শব্দ ধারণ করতে পারেন। এছাড়াও আপনি অসংবেদী অনুসন্ধান ক্ষেত্রে $options => i ব্যবহার করতে পারেন

string রয়েছে

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

শুধুমাত্র Regex সঙ্গে 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'}})

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


একত্রীকরণ সাবস্ট্রিং অনুসন্ধান ব্যবহার করুন (সূচক সঙ্গে !!!):

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

এসকিউএল-এ, ' পছন্দ ' প্রশ্নটি এই রকম দেখাচ্ছে:

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

মংডোডিবি কনসোলে, এটি এভাবে দেখায়:

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

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

Addition pretty() পদ্ধতিতে যেখানে সমস্ত পঠনযোগ্য JSON কাঠামো উত্পাদন করা হবে সেখানে আরও পঠনযোগ্য।


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

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

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

যেমন

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)

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

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

মধ্যে

  • Python ব্যবহার Pymongo
  • Node.js ব্যবহার করে Mongoose
  • Jongo , জাভা ব্যবহার করে
  • এমগো , গো ব্যবহার করে

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

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

যান এবং mgo ড্রাইভার মধ্যে:

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

যেখানে ফলাফল চাওয়া পরের গঠন উদাহরণ


যে হতে হবে:

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

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

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

আপনি এমন কিছু খুঁজছেন যা "এম" কোথাও রয়েছে (SQL এর ' % ' অপারেটরটি Regexp এর ' .* ' এর সমতুল্য), এমন কিছু না যা "স্ট্রিংয়ের শুরুতে" এম।


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

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

Node.js ব্যবহার করে, it বলে যে আপনি এটি লিখতে পারেন:

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

Also , আপনি এটি লিখতে পারেন:

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

স্ট্যাটাসের সাথে 'শেষ' মত FullName == 'মুলতুবি' দুটি তারিখের মধ্যে:

db.orders.find({
      createdAt:{$gt:ISODate("2017-04-25T10:08:16.111Z"),
      $lt:ISODate("2017-05-05T10:08:16.111Z")},
      status:"Pending",
      fullName:/last/}).pretty();

অবস্থা == 'মুলতুবি' এবং অর্ডার 'PHA876174' মত:

db.orders.find({
     status:"Pending",
     orderId:/PHA876174/
     }).pretty();

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

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





sql-like