Je veux interroger quelque chose avec la like
requête SQL :
SELECT * FROM users WHERE name LIKE '%m%'
Comment puis-je obtenir la même chose dans MongoDB? Je ne trouve pas d'opérateur like
dans la documentation .
sql
mongodb
mongodb-query
sql-like
Freewind
la source
la source
5
votes pour le tag d' opérateur similaire . Puis-je vous demander de suggérer comme sql-like comme synonyme ?Réponses:
Cela devrait être:
ou similaire:
Vous recherchez quelque chose qui contient «m» quelque part (l'
%
opérateur « » de SQL est équivalent à «.*
» de Regexp ), pas quelque chose qui a «m» ancré au début de la chaîne.note: mongodb utilise des expressions régulières plus puissantes que "LIKE" en sql. Avec des expressions régulières, vous pouvez créer n'importe quel motif que vous imaginez.
Pour plus d'informations sur les expressions régulières, reportez-vous à ce lien https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions
la source
LIKE
requête en SQL.javascript db.users.find({ "name": { $regex: /m/i } })
sortie: paulo, patric
sortie: paulo, patric
sortie: pedro
la source
select name from users;
qui répertorie tous les utilisateurs?Dans
tu peux faire:
la source
%sometext%
db.users.find({'name': {'$regex': 'sometext', '$options': 'i'}})
En PHP, vous pouvez utiliser le code suivant:
la source
$collection.where(field => {"$regex" => value})
Vous utiliseriez regex pour cela en mongo.
par exemple:
db.users.find({"name": /^m/})
la source
Il existe déjà de nombreuses réponses. Je donne différents types d'exigences et de solutions pour la recherche de chaînes avec regex.
Vous pouvez le faire avec des expressions rationnelles qui contiennent des mots ie comme. Vous pouvez également utiliser
$options => i
pour la recherche insensible à la casseContient
string
Ne contient pas
string
uniquement avec regexInsensible à la casse exacte
string
Commencer avec
string
Terminer par
string
Conservez -le comme un signet et une référence pour toute autre modification dont vous pourriez avoir besoin.
la source
Vous avez 2 choix:
ou
Sur le second, vous avez plus d'options, comme "i" dans les options pour trouver en utilisant la casse. Et à propos de la "chaîne", vous pouvez utiliser comme ". Chaîne. " (% Chaîne%), ou "chaîne. *" (Chaîne%) et ". * Chaîne) (% chaîne) par exemple. Vous pouvez utiliser l'expression régulière comme tu veux.
Prendre plaisir!
la source
Si vous utilisez node.js , il est écrit que vous pouvez écrire ceci:
En outre , vous pouvez écrire ceci:
la source
collection.where(field => Regexp.new(value))
Vous avez déjà obtenu les réponses, mais pour faire correspondre l'expression rationnelle avec l'insensibilité à la casse
Vous pouvez utiliser la requête suivante
Le
i
dans le/m/i
indique une insensibilité à la casse et.pretty()
fournit une sortie plus joliela source
var search="feacebook"
alors comment puis-je définir ci-dessous @ The6thSens Oui, maisdb.users.find ({ "name" : /search/i } )
?Pour Mongoose dans Node.js
la source
Vous pouvez utiliser la nouvelle fonctionnalité de 2.6 mongodb:
la source
Dans le projet nodejs et utilisez mangouste, utilisez la requête Like
la source
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'}; }
pouvez-vous voir pourquoi cela ne fonctionne pas?$regex: 'value'
générer une expression régulière pour votre valeur de recherche et$options: 'i'
signifie insensible à la casse . Votre code n'a pas travaillé à cause de vous utilisé même valeur pour différents biens et qui agissent comme et la condition qui ne devrait pas remplir avec votre collection de base de données.Pour PHP mongo Like.
J'ai eu plusieurs problèmes avec php mongo comme. J'ai trouvé que la concaténation des paramètres regex aide dans certaines situations, le champ de recherche PHP mongo commence par . Je pensais que je posterais ici pour contribuer au fil le plus populaire
par exemple
la source
L'utilisation de littéraux de modèle avec des variables fonctionne également:
{"firstname": {$regex : `^${req.body.firstname}.*` , $options: 'si' }}
la source
Avec MongoDB Compass, vous devez utiliser la syntaxe de mode strict, en tant que telle:
(Dans MongoDB Compass, il est important que vous utilisiez
"
au lieu de'
)la source
Vous pouvez utiliser l'instruction where pour créer n'importe quel script JS:
Référence: http://docs.mongodb.org/manual/reference/operator/where/
la source
$where
est très inefficace. Faire une analyse complète de la collection :(En SQL, la requête ' like ' ressemble à ceci:
Dans la console MongoDB, cela ressemble à ceci:
En outre, la
pretty()
méthode produira à tous les endroits où la structure JSON formatée sera plus lisible.la source
Les regex coûtent cher.
Une autre façon consiste à créer un index de texte, puis à le rechercher à l'aide de
$search
.Créez un index de texte des champs que vous souhaitez rendre consultable:
Recherchez une chaîne dans l'index de texte:
la source
Dans Go et le pilote mgo:
où result est l'instance struct du type recherché
la source
bson:RegEx{Pattern:"m", Options:"i"}
placeUtilisez des expressions régulières correspondant comme ci-dessous. Le «i» montre une insensibilité à la casse.
la source
Comme la requête serait comme indiqué ci-dessous
pour scala ReactiveMongo api,
la source
Il semble qu'il y ait des raisons d'utiliser à la fois le
/regex_pattern/
modèle javascript et le{'$regex': 'regex_pattern'}
modèle mongo . Voir: Restrictions de la syntaxe MongoBD RegExCe n'est pas un tutoriel RegEx complet, mais j'ai été inspiré pour exécuter ces tests après avoir vu un post ambigu très voté ci-dessus .
la source
Si vous utilisez Spring-Data Mongodb Vous pouvez le faire de cette façon:
la source
Comme le shell Mongo supporte les regex, c'est tout à fait possible.
Si nous voulons que la requête soit insensible à la casse, nous pouvons utiliser l'option "i", comme indiqué ci-dessous:
la source
Si vous voulez une recherche «J'aime» dans mongo, vous devriez utiliser $ regex en utilisant cette requête.
db.product.find({name:{$regex:/m/i}})
pour en savoir plus, vous pouvez également lire la documentation. https://docs.mongodb.com/manual/reference/operator/query/regex/
la source
Utilisez la recherche de sous-chaîne d'agrégation (avec index !!!):
la source
{ "_id" : ObjectId("5aba5ad988385120a01b1ac2"), "fieldExists" : 4 }
String deepakparmar, dipak, parmar
ans deepakparmar
ans deepakparmar, dipak
ans deepakparmar, parmar
la source
J'ai trouvé un outil gratuit pour traduire les requêtes MYSQL en MongoDB. http://www.querymongo.com/ J'ai vérifié avec plusieurs requêtes. comme je vois presque tous sont corrects. Selon cela, la réponse est
la source
MongoRegex est obsolète.
Utilisez MongoDB \ BSON \ Regex
la source
Lorsque nous recherchons des modèles de chaîne, il est toujours préférable d'utiliser le modèle ci-dessus comme lorsque nous ne sommes pas sûrs de la casse. J'espère que cela pourra aider!!!
la source