Eu quero consultar algo com a like
consulta do SQL :
SELECT * FROM users WHERE name LIKE '%m%'
Como faço para conseguir o mesmo no MongoDB? Não consigo encontrar um operador like
na documentação .
sql
mongodb
mongodb-query
sql-like
Vento livre
fonte
fonte
5
votos para a tag de operador like . Posso pedir que você sugira sql-like como sinônimo ?Respostas:
Isso teria que ser:
ou similar:
Você está procurando algo que contenha "m" em algum lugar (o
%
operador ' ' do SQL é equivalente ao '.*
' da Regexp ) ', não algo que tenha "m" ancorado no início da string.nota: o mongodb usa expressões regulares que são mais poderosas que "LIKE" no sql. Com expressões regulares, você pode criar qualquer padrão que imaginar.
Para obter mais informações sobre expressões regulares, consulte este link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions
fonte
LIKE
consulta no SQL.javascript db.users.find({ "name": { $regex: /m/i } })
fora: paulo, patric
fora: paulo, patric
fora: pedro
fonte
select name from users;
que apenas lista todos os usuários?No
você pode fazer:
fonte
%sometext%
db.users.find({'name': {'$regex': 'sometext', '$options': 'i'}})
No PHP, você pode usar o seguinte código:
fonte
$collection.where(field => {"$regex" => value})
Você usaria regex para isso no mongo.
por exemplo:
db.users.find({"name": /^m/})
fonte
Já existem muitas respostas. Estou fornecendo diferentes tipos de requisitos e soluções para pesquisa de strings com regex.
Você pode fazer com o regex que contém a palavra, por exemplo, like. Além disso, você pode usar
$options => i
para pesquisa que não diferencia maiúsculas de minúsculasContém
string
Não contém
string
apenas regexInsensível a maiúsculas e minúsculas
string
Começar com
string
Terminar com
string
Mantenha isso como marcador e referência para quaisquer outras alterações que você possa precisar.
fonte
Você tem 2 opções:
ou
No segundo, você tem mais opções, como "i" nas opções para encontrar o uso de maiúsculas e minúsculas. E sobre a "string", você pode usar como ". String. " (% String%) ou "string. *" (String%) e ". * String) (% string), por exemplo. Você pode usar expressões regulares como você quiser.
Aproveitar!
fonte
Se você estiver usando o node.js , ele diz que você pode escrever isso:
Além disso , você pode escrever isso:
fonte
collection.where(field => Regexp.new(value))
Você já conseguiu as respostas, mas para combinar regex com insensibilidade a maiúsculas e minúsculas
Você poderia usar a seguinte consulta
O
i
na/m/i
indica caso insensibilidade e.pretty()
fornece uma saída mais bonitafonte
var search="feacebook"
então como posso definir abaixo @ The6thSens Sim, masdb.users.find ({ "name" : /search/i } )
?Para Mongoose no Node.js
fonte
Você pode usar o novo recurso do 2.6 mongodb:
fonte
No nodejs project e use mongoose use Like query
fonte
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'}; }
você pode ver por que isso não está funcionando?$regex: 'value'
gerar expressão regular para o seu valor de pesquisa e$options: 'i'
significa que não diferencia maiúsculas de minúsculas . Seu código não funcionou por causa do que você usou mesmo valor para a propriedade diferente e que atuam como e condição que não deve cumprir com sua coleção de banco de dados.Para o PHP mongo Like.
Eu tive vários problemas com o php mongo like. Eu descobri que concatenar os parâmetros do regex ajuda em algumas situações o PHP mongo find field começa com . Eu pensei em postar aqui para contribuir com o tópico mais popular
por exemplo
fonte
Usar literais de modelo com variáveis também funciona:
{"firstname": {$regex : `^${req.body.firstname}.*` , $options: 'si' }}
fonte
Com o MongoDB Compass, você precisa usar a sintaxe do modo estrito, como:
(No MongoDB Compass, é importante que você use em
"
vez de'
)fonte
Você pode usar a instrução where para criar qualquer script JS:
Referência: http://docs.mongodb.org/manual/reference/operator/where/
fonte
$where
é altamente ineficiente. Fazer varredura completa da coleção :(No SQL, a consulta ' like ' é assim:
No console do MongoDB, fica assim:
Além disso
pretty()
método irá em todos os lugares onde produzir estrutura JSON formatada que é mais legível.fonte
Regex são caros são processo.
Outra maneira é criar um índice de texto e pesquisá-lo usando
$search
.Crie um índice de texto dos campos que você deseja tornar pesquisável:
Procure uma sequência no índice de texto:
fonte
No Go e o driver mgo:
em que result é a instância struct do tipo procurado
fonte
bson:RegEx{Pattern:"m", Options:"i"}
em vezUse expressões regulares correspondentes como abaixo. O 'i' mostra insensibilidade ao caso.
fonte
Como Query seria como mostrado abaixo
para scala ReactiveMongo api,
fonte
Parece que existem razões para usar o
/regex_pattern/
padrão javascript e o mongo{'$regex': 'regex_pattern'}
. Consulte: Restrições de sintaxe MongoBD RegExEste não é um tutorial completo do RegEx, mas fui inspirado a executar esses testes depois de ver uma postagem ambígua altamente votada acima .
fonte
Se você estiver usando o Spring-Data Mongodb, poderá fazer isso desta maneira:
fonte
Como o shell Mongo suporta regex, isso é completamente possível.
Se quisermos que a consulta não diferencie maiúsculas de minúsculas, podemos usar a opção "i", como mostrado abaixo:
fonte
Se você quiser uma pesquisa 'Like' no mongo, deverá usar $ regex usando esta consulta.
db.product.find({name:{$regex:/m/i}})
para mais, você pode ler a documentação também. https://docs.mongodb.com/manual/reference/operator/query/regex/
fonte
Use a pesquisa de substring de agregação (com índice !!!):
fonte
{ "_id" : ObjectId("5aba5ad988385120a01b1ac2"), "fieldExists" : 4 }
String deepakparmar, dipak, parmar
ans deepakparmar
ans deepakparmar, dipak
ans deepakparmar, parmar
fonte
Encontrei uma ferramenta gratuita para traduzir consultas MYSQL para o MongoDB. http://www.querymongo.com/ Verifiquei com várias consultas. como eu vejo quase todos eles estão corretos. De acordo com isso, a resposta é
fonte
O MongoRegex foi preterido.
Use MongoDB \ BSON \ Regex
fonte
Quando estamos pesquisando padrões de cadeia, sempre é melhor usar o padrão acima como quando não temos certeza sobre o caso. Espero que ajude!!!
fonte