“Like” සමඟ මොන්ගෝ ඩීබී විමසන්නේ කෙසේද?


1464

SQL හි likeවිමසුම සමඟ මට යමක් විමසීමට අවශ්‍යයි :

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

මොන්ගෝ ඩීබී හි දී මම එය සාක්ෂාත් කරගන්නේ කෙසේද? ප්‍රලේඛනයlike තුළ මට ක්‍රියාකරුවෙකු සොයාගත නොහැක .


7
මොන්ගෝඩ්ගේ ලියකියවිලි බලන්න: උසස් විමසුම් - නිත්‍ය ප්‍රකාශන mongodb.org/display/DOCS/…
douyw

7
ඔබගේ ප්‍රශ්නයට අවම වශයෙන් සමාන ක්‍රියාකරු ටැගය 5සඳහා ඡන්ද ඇත. SQL වැනි සමාන පදයක් යෝජනා කරන ලෙස මට කාරුණිකව ඉල්ලා සිටිය හැකිද?
කර්මිත්

3
මෙම සබැඳිය ඔබට උදව් වනු ඇත goo.gl/gdTYK8
දිලිප් ක්‍රි සිං

db.users.find (name 'name': {'ge regex': 'someext', '$ options': 'i'}})
අෂිෂ් චෞබි

Answers:


1985

එය එසේ විය යුතුය:

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

හෝ, සමාන:

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

ඔබ සොයන්නේ කොතැනක හෝ "m" අඩංගු දෙයක් (SQL හි %ක්‍රියාකරු Regexp ගේ ' .*' ට සමාන වේ ), නමුත් "m" නූලෙහි ආරම්භයට නැංගුරම් ලා ඇති දෙයක් නොවේ.

සටහන: මොන්ගෝඩ්බ් වර්ග අඩි "LIKE" ට වඩා බලවත් නිත්‍ය ප්‍රකාශන භාවිතා කරයි. නිතිපතා ප්‍රකාශන සමඟ ඔබ සිතන ඕනෑම රටාවක් නිර්මාණය කළ හැකිය.

සාමාන්‍ය ප්‍රකාශන පිළිබඳ වැඩි විස්තර සඳහා මෙම සබැඳිය බලන්න https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions


96
රීජෙක්ස් මගින් සෙවීම මිල අධිකද?
Freewind

147
ඇත්තටම එය රඳා පවතී. විමසුම දර්ශකයක් භාවිතා නොකරන්නේ නම් සහ මේස පරිලෝකනය කළ යුතු නම් එය නිසැකවම මිල අධික විය හැකිය. ඔබ කරන්නේ රීජෙක්ස් විමසුම 'ආරම්භයෙන්' නම්, එවිට දර්ශකයක් භාවිතා කළ හැකිය. සිදුවන්නේ කුමක්දැයි බැලීමට පැහැදිලි කිරීමක් () ධාවනය කිරීම වඩාත් සුදුසුය.
කයිල් බැංකුකරු

36
නූලේ ආරම්භයට නැංගුරම් ලා නොමැති විට එය තරමක් මිල අධිකය. නමුත් නැවතත්, LIKESQL හි විමසුමකි.
එමිලි

4
එය නූල් ආරම්භයට නැංගුරම් ලා ඇති තාක් කල් එය හරිද? එවිට සිසිල්. එයින් අදහස් කරන්නේ අප add
user4951

44
මම රීජෙක්ස් අයිjavascript db.users.find({ "name": { $regex: /m/i } })
ඩොරන් සේගල්

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

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

out: paulo, patric

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

out: paulo, patric

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

පිටත: පෙඩ්රෝ


හොඳ උදාහරණයක්! මම අවකාශය සමඟ චෙක් අවසානය සොයාගෙන මෙය සොයා ගතිමි :) / $ /
Phuong

නම සඳහා වන සියලුම ප්‍රවේශයන් ඔබ සොයා ගන්නේ කෙසේද? හෝ SQL හි * සඳහා වන ආදේශක කාඩ්පතද? select name from users;සියලුම පරිශීලකයින් ලැයිස්තුගත කරන යමක් කරනවාද?
anon58192932

1
users anon58192932 “පරිශීලකයින්” නම් වූ වගුවක “නම” ක්ෂේත්‍රයේ සියලුම ඇතුළත් කිරීම් ප්‍රදර්ශනය කිරීම සඳහා, ඔබට අවශ්‍ය ක්ෂේත්‍රවල අගයන් සැකසීම මඟින් ඔබට ව්‍යාපෘති () ක්‍රමය භාවිතා කළ හැකිය. 1. ව්‍යාපෘතියේ () සඳහන් කර නොමැති ක්ෂේත්‍ර _id හැර. _id ක්ෂේත්‍රය පෙරනිමියෙන් මුද්‍රණය කර ඇති අතර එමඟින් ව්‍යාපෘතියේ () ක්‍රමය තුළ _id සඳහා 0 අගය යෙදීමෙන් ඔබට යටපත් කළ හැකිය. වැනි දෙයක් - db.collection.find (). ව්‍යාපෘතිය ({name: 1, _id: 0}) .toArray (function (err, docs) {console.log (docs); callback (docs);}); මෙය බලන්න - docs.mongodb.com/manual/tutorial/…
gauravparmar

289

තුළ

  • PyMongo භාවිතා Python
  • Node.js භාවිතා කරමින් මොන්ගෝස්
  • ජොන්ගෝ , ජාවා භාවිතා කිරීම
  • mgo , Go භාවිතා කරමින්

ඔබට කළ හැකිය:

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

2
සිද්ධි සංවේදී සෙවීම සඳහා එය හොඳින් ක්‍රියාත්මක වේ, කරුණාකර මට කියන්න පුළුවන්ද සිද්ධි සංවේදී සෙවීම සිදු කරන්නේ කෙසේද?
තාහීර් යසින්

රීජෙක්ස් කුමක් වනු ඇත්ද%sometext%
තාහීර් යසින්

65
Ah තාහීර් යසින් ඔබ තවමත් කල්පනා කරන්නේ නම්, සිද්ධි සංවේදී නොවන සෙවීම මේ ආකාරයෙන් සිදු කරනු ඇත:db.users.find({'name': {'$regex': 'sometext', '$options': 'i'}})
sumowrestler

මම ගොලාන්ග් හි mgo සරල කේතයක් භාවිතා කර විසඳා ගත්තෙමි, තේරීම් කාරක: = bson.M techn "කාර්මිකයා": bson.M {"ge regex": tech}}
සඳුන් ප්‍රියංකා

1
පිළිගත් පිළිතුර විය යුත්තේ මෙයයි. එය දැනට සරලම හා අලංකාරයි.
බ්‍රෙට් 84 සී

90

PHP හි, ඔබට පහත කේතය භාවිතා කළ හැකිය:

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

4
python + mongoengine: people = People.objects.raw_query (name 'name': {'$ regex': 'm'}})
පංචිකෝර්

1
ඔබේ RegEx අගය ආරම්භ වන්නේ පරිශීලක ආදානයෙන් නම් (උදා: පෙරහන් පෝරමයක්) සහ එම අගයම RegExp ලෙස ගැනීමට ඔබට අවශ්‍ය නැතිනම්, ඔබ එයට preg_quote () යෙදිය යුතුය.
පිලිප් රයිබර්

2
මට මෙය වැටහී ඇත, නමුත් මෙය ඇත්ත වශයෙන්ම වැරදි පිළිතුරකි, එය ක්‍රියා කළද එය උප ප්‍රශස්ත ය, ඔබ ඒ වෙනුවට මොන්ගෝ රීජෙක්ස් හරහා සත්‍ය BSON රීජෙක්ස් වස්තුව භාවිතා කළ යුතුය, $ රීජෙක්ස් වැනි සමහර විධානයන් සමඟ අනුකූලතා ගැටලු ඇත
සම්මේ

අගය විචල්‍යයක ගබඩා කර ඇත්නම් මෙම වාක්‍ය ඛණ්ඩය ප්‍රයෝජනවත් වේ, එබැවින් විමසුම (රූබි $collection.where(field => {"$regex" => value})
භාෂාවෙන්

නමුත් ඔබට අරා වචන භාවිතා කළ නොහැක්කේ ඇයි?
ඇල්පර්

55

ඔබ මොන්ගෝ හි රීජෙක්ස් භාවිතා කරනු ඇත.

උදා: db.users.find({"name": /^m/})


29
මම හිතන්නේ මෙය පෙන්වන්නේ "m" සමඟ ආරම්භ වන නාම අගයක් සහිත ලේඛන පමණි
JackAce

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

මෙය පිටු සලකුණක් ලෙස තබා ගන්න , ඔබට අවශ්‍ය වෙනත් වෙනස් කිරීම් සඳහා යොමු කිරීමක්.


38

ඔබට තේරීම් 2 ක් ඇත:

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

හෝ

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

දෙවනුව ඔබට "i" වැනි තවත් විකල්ප ඇත. "නූල්" ගැන, ඔබට ". String " (% string%), හෝ "string. *" (String%) සහ ". * String) (% string) වැනි භාවිතා කළ හැකිය. ඔබට නිත්‍ය ප්‍රකාශනය භාවිතා කළ හැකිය ඔබට අවශ්ය පරිදි.

විනෝද වන්න!


36

Node.js භාවිතා කරන්නේ නම් , එය ඔබට මෙය ලිවිය හැකි බව පවසයි:

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පෙන්නුම් නඩුව අසංවේදී සහ .pretty()වඩාත් ලස්සන ප්රතිදානය ලබා


නමුත් මට මෙහි ගතිකව අගය සැකසීමට අවශ්‍ය නම්
KS

Uld කුල්දීප් කෝරන්ගා ඔබට 'එම්' වෙනුවට ඕනෑම ගතික අගයක් තැබිය හැකිය. ඔබට අවශ්‍ය දේ එයයි.
The6thSense

var search="feacebook"ඉතින් මම පහත දැක්වෙන්නේ කෙසේද 6 The6thSens ඔව්, නමුත් db.users.find ({ "name" : /search/i } )?
කේඑස්

Uld කුල්දීප් කෝරන්ගා ඔබට වටිනාකම පවරා ඇත.
The6thSense

1
UldKuldeepKoranga stackoverflow.com/questions/7790811/… මෙය උදව් කරයි
The6thSense


13

ඔබට 2.6 mongodb හි නව අංගය භාවිතා කළ හැකිය:

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
සටහන, AFAIK මොන්ගෝඩ්බ්ගේ පෙළ සෙවීම ක්‍රියා කරන්නේ පෙරනිමියෙන් පමණි, එබැවින් මෙය "මෙය පෙළ සහිත නූලක්" වැනි අගයන්ට ගැලපේ, නමුත් "මෙය උප පදයක් සහිත නූලක්" නොවේ. එබැවින් එය SQL හි "LIKE" ක්‍රියාකරු මෙන් නොවේ.
රොකට්මොන්කිස්

OcRocketmonkeys එහි සත්‍යය .. "LIKE operator" වැනි දෙයක් සඳහා ඔබ භාවිතා කරන්නේ $ regex mongo operator.
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'};
ෂයිෂාබ් රෝයි

ඔයා මගේ ජීවිතය බේරගන්න මචං. $ regex සහ $ විකල්ප යනු කුමක්දැයි ඔබට සුළු වශයෙන් පැහැදිලි කළ හැකිද?
මුහම්මද් ෂාසාඩ්

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

PHP මොන්ගෝ සඳහා.
මට php mongo වැනි ගැටළු කිහිපයක් තිබුණා. රීජෙක්ස් පරාමිතීන් සමපාත කිරීම සමහර අවස්ථාවල දී PHP මොන්ගෝ සොයා ගැනීමේ ක්ෂේත්‍රය ආරම්භ වන බව මට පෙනී ගියේය. වඩාත් ජනප්‍රිය නූලට දායක වීම සඳහා මම මෙහි පළ කරනු ඇතැයි මම සිතුවෙමි

උදා

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)

පෙර පිළිතුරු සහ අදහස් වලට අනුව $ පෙළ (දර්ශකය) සෙවීම $ රීජෙක්ස් ක්‍රමයට සාපේක්ෂව මිණුම් ලකුණ සමඟ වඩා හොඳ විසඳුමක් ලබා දෙනු ඇත. යොමුව සඳහා මෙම සබැඳිය stackoverflow.com/questions/10610131/… පරීක්ෂා කරන්න . PHP සහ mongoDB සමග $ පෙළ දර්ශකය ක්රමය ක්රියාත්මක කිරීමට හැකි වන්නේ
ශන්කර් muniyappa

12

විචල්යයන් සහිත අච්චු වචන භාවිතා කිරීම ද ක්රියා කරයි:

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


මෙය හිටපු ආරම්භයේ සිට සෙවීමකි - "පළමු නම" ටෙස්ට්ලාස්ට් අඩංගු නම් සහ මම "අන්තිම" මගින් සෙවුවහොත් එය ප්‍රති .ල ලබා නොදේ.
විකාස් චෞහාන්

11

ඕනෑම JS ස්ක්‍රිප්ටයක් තැනීම සඳහා ඔබට ප්‍රකාශය භාවිතා කළ හැකිය:

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

යොමුව: http://docs.mongodb.org/manual/reference/operator/where/


9
$whereඉතා අකාර්යක්ෂමයි. සම්පූර්ණ එකතු කිරීමේ ස්කෑන් කරන්න :(
සුෂාන්ත් ගුප්තා

අහ්, ප්‍රශ්නයක් නැහැ, මම එහෙම කිව්වේ: ඩී
සුෂාන්ත් ගුප්තා

11

මොන්ගෝ ඩීබී මාලිමා යන්ත්‍රය සමඟ, ඔබ දැඩි මාදිලියේ වාක්‍ය ඛණ්ඩය භාවිතා කළ යුතුය.

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

(මොන්ගෝ ඩීබී මාලිමා යන්ත්‍රයේ, ඒ "වෙනුවට ඔබ භාවිතා කිරීම වැදගත් වේ ')


10

SQL හි, ' like ' විමසුම මේ වගේ ය:

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

මොන්ගෝ ඩී බී කොන්සෝලය තුළ, මෙය පෙනෙන්නේ:

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

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

එකතු pretty()කිරීමේ ක්‍රමයේදී වඩාත් කියවිය හැකි පරිදි ආකෘතිගත JSON ව්‍යුහය නිපදවන සියලුම ස්ථානවල ඇත.


10

Regex මිල අධිකයි.

තවත් ක්‍රමයක් නම් පෙළ දර්ශකයක් නිර්මාණය කර එය භාවිතයෙන් සෙවීමයි $search.

පෙළක් සාදන්න ඔබට සෙවිය හැකි ක්ෂේත්‍ර දර්ශකය:

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

පෙළ දර්ශකයේ නූලක් සොයන්න:

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

පරිපූර්ණ විසඳුම ... රීජෙක්ස් මිල අධික ක්‍රමයකි. මීටර් 20 ක දත්ත කට්ටලයක් සමඟ වැඩ කිරීම සහ කාර්යසාධන වෙනස ඉතා කැපී පෙනේ (එය අඩු තක්සේරුවකි)
නවෙන්සුකරන්

1
ඇත්ත වශයෙන්ම, මෙය ක්‍රියාත්මක වන්නේ සම්පූර්ණ වචන සඳහා පමණි , docs.mongodb.com/manual/core/index-text/#index-entries
තෝමස් ඊබට්

9

Go සහ mgo ධාවකයේදී:

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

මෙහි ප්‍රති 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));

5

නූල් දීපක්පර්මාර්, දීපක්, පර්මාර්

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

ans deepakparmar

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

ans deepakparmar, දීපක්

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

ans deepakparmar, parmar


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 }
ගියන්ෆ්‍රැන්කෝ පී.

$ ව්‍යාපෘති අවධියේදී ඔබට අවශ්‍ය දේ
ප්‍රක්ෂේපණය

2

MYSQL විමසුම් මොන්ගෝ ඩීබී වෙත පරිවර්තනය කිරීමට මට නොමිලේ මෙවලමක් හමු විය. http://www.querymongo.com/ මම විමසුම් කිහිපයක් සමඟ පරීක්ෂා කළෙමි. මා දකින පරිදි ඒවා සියල්ලම පාහේ නිවැරදි ය. ඒ අනුව, පිළිතුර නම්

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

2

මොන්ගෝ රීජෙක්ස් ඉවත් කර ඇත.
MongoDB \ BSON \ Regex භාවිතා කරන්න

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

මෙය PHP හි මොන්ගෝ රීජෙක්ස් පන්තියට යොමු වන බව සැලකිල්ලට ගැනීම වැදගත්ය . නෝඩ් පිළිබඳ මෙම ප්‍රශ්නයට එතරම් අදාළ නොවේ. මෙය බොහෝ විට අදහස් දැක්වීමක් හෝ වඩා හොඳ විය යුතුය - වෙනමම තනතුරක ස්වයං පිළිතුරු ප්‍රශ්නයක්.
බෝවස්

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

අපි නූල් රටා සොයන විට, සෑම විටම අපට නඩුව ගැන විශ්වාස නැති විට ඉහත රටාව භාවිතා කිරීම වඩා හොඳය. උදව් කරන බලාපොරොත්තුව !!!

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.