Quiero consultar algo con la like
consulta de SQL :
SELECT * FROM users WHERE name LIKE '%m%'
¿Cómo hago para lograr lo mismo en MongoDB? No puedo encontrar un operador like
en la documentación .
sql
mongodb
mongodb-query
sql-like
Viento libre
fuente
fuente
5
votos para la etiqueta de operador similar . ¿Podría solicitar amablemente que sugiera sql-like como sinónimo ?Respuestas:
Eso tendría que ser:
o similar:
Está buscando algo que contenga "m" en alguna parte (el
%
operador ' ' de SQL es equivalente a '.*
' de Regexp ), no algo que tenga "m" anclado al comienzo de la cadena.nota: mongodb usa expresiones regulares que son más poderosas que "LIKE" en sql. Con expresiones regulares puedes crear cualquier patrón que imagines.
Para obtener más información sobre expresiones regulares, consulte este enlace https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions
fuente
LIKE
consulta en SQL.javascript db.users.find({ "name": { $regex: /m/i } })
fuera: paulo, patric
fuera: paulo, patric
fuera: pedro
fuente
select name from users;
que solo enumera a todos los usuarios?En
tu puedes hacer:
fuente
%sometext%
db.users.find({'name': {'$regex': 'sometext', '$options': 'i'}})
En PHP, puede usar el siguiente código:
fuente
$collection.where(field => {"$regex" => value})
Usarías regex para eso en mongo.
p.ej:
db.users.find({"name": /^m/})
fuente
Ya hay muchas respuestas. Estoy dando diferentes tipos de requisitos y soluciones para la búsqueda de cadenas con expresiones regulares.
Puede hacerlo con expresiones regulares que contienen palabras, es decir, me gusta. También puede usar
$options => i
para la búsqueda sin distinción entre mayúsculas y minúsculasContiene
string
No contiene
string
solo con expresiones regularesCaso exacto insensible
string
Empezar con
string
Terminar con
string
Conserve esto como un marcador y como referencia para cualquier otra modificación que pueda necesitar.
fuente
Tienes 2 opciones:
o
En el segundo, tiene más opciones, como "i" en las opciones para encontrar usando mayúsculas y minúsculas. Y sobre la "cadena", puede usar como ". Cadena " (% cadena%) o "cadena. *" (Cadena%) y ". * Cadena) (% cadena) por ejemplo. Puede usar expresiones regulares como tu quieras
¡Disfrutar!
fuente
Si el uso de Node.js , se dice que se puede escribir lo siguiente:
Además , puedes escribir esto:
fuente
collection.where(field => Regexp.new(value))
Ya tienes las respuestas, pero para que coincida la expresión regular con insensibilidad a mayúsculas y minúsculas
Puedes usar la siguiente consulta
En
i
el/m/i
caso indica insensibilidad al caso y.pretty()
proporciona una salida más bonitafuente
var search="feacebook"
Entonces,db.users.find ({ "name" : /search/i } )
¿ cómo puedo configurar a continuación @ The6thSens Sí, pero ?Para Mangosta en Node.js
fuente
Puede usar la nueva característica de 2.6 mongodb:
fuente
En el proyecto nodejs y use mangosta, use Like query
fuente
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'}; }
¿Puedes ver por qué esto no funciona?$regex: 'value'
generar una expresión regular para el valor de búsqueda y$options: 'i'
medios entre mayúsculas y minúsculas . Su código no funcionó debido a que utilizó mismo valor para diferentes propiedades y que actúan como y condición que no debe cumplir con su colección de base de datos.Para PHP Mongo Like.
Tuve varios problemas con php mongo como. descubrí que la concatenación de los parámetros de expresiones regulares ayuda en algunas situaciones con las que comienza PHP mongo find field . Pensé que publicaría aquí para contribuir al hilo más popular
p.ej
fuente
Usar plantillas literales con variables también funciona:
{"firstname": {$regex : `^${req.body.firstname}.*` , $options: 'si' }}
fuente
Con MongoDB Compass, debe usar la sintaxis de modo estricto, como tal:
(En MongoDB Compass, es importante que use en
"
lugar de'
)fuente
Puede usar la instrucción where para construir cualquier script JS:
Referencia: http://docs.mongodb.org/manual/reference/operator/where/
fuente
$where
Es altamente ineficiente. Hacer un análisis completo de la colección :(En SQL, la consulta 'me gusta ' se ve así:
En la consola MongoDB, se ve así:
Además, el
pretty()
método incluirá en todos los lugares donde se produzca una estructura JSON formateada que sea más legible.fuente
Regex son caros son proceso.
Otra forma es crear un índice de texto y luego buscarlo usando
$search
.Cree un índice de texto de los campos que desea que se puedan buscar:
Busque una cadena en el índice de texto:
fuente
En Go y el controlador mgo:
donde resultado es la instancia de estructura del tipo buscado
fuente
bson:RegEx{Pattern:"m", Options:"i"}
en su lugarUse expresiones regulares que coincidan como a continuación. La 'i' muestra insensibilidad a mayúsculas y minúsculas.
fuente
Like Mery sería como se muestra a continuación
para scala ReactiveMongo api,
fuente
Parece que hay razones para usar tanto el
/regex_pattern/
patrón javascript como el{'$regex': 'regex_pattern'}
patrón mongo . Ver: Restricciones de sintaxis de RegEx de MongoBDEste no es un tutorial completo de RegEx, pero me inspiré para ejecutar estas pruebas después de ver una publicación ambigua muy votada arriba .
fuente
Si está utilizando Spring-Data Mongodb, puede hacerlo de esta manera:
fuente
Como Mongo shell admite regex, eso es completamente posible.
Si queremos que la consulta no distinga entre mayúsculas y minúsculas, podemos usar la opción "i", como se muestra a continuación:
fuente
Si desea buscar 'Me gusta' en mongo, entonces debe ir con $ regex usando esta consulta será
db.product.find({name:{$regex:/m/i}})
Para más información, también puede leer la documentación. https://docs.mongodb.com/manual/reference/operator/query/regex/
fuente
Utilice la búsqueda de subcadenas de agregación (con índice !!!):
fuente
{ "_id" : ObjectId("5aba5ad988385120a01b1ac2"), "fieldExists" : 4 }
Cadena deepakparmar, dipak, parmar
ans deepakparmar
ans deepakparmar, dipak
ans deepakparmar, parmar
fuente
Encontré una herramienta gratuita para traducir consultas MYSQL a MongoDB. http://www.querymongo.com/ Lo comprobé con varias consultas. como veo casi todos ellos son correctos. Según eso, la respuesta es
fuente
MongoRegex ha quedado en desuso.
Utilice MongoDB \ BSON \ Regex
fuente
Cuando buscamos patrones de cadena, siempre es mejor usar el patrón anterior como cuando no estamos seguros del caso. ¡¡¡Espero que ayude!!!
fuente