Estou procurando um operador, que me permita verificar se o valor de um campo contém uma determinada string.
Algo como:
db.users.findOne({$contains:{"username":"son"}})
Isso é possível?
Você pode fazer isso com o seguinte código.
db.users.findOne({"username" : {$regex : ".*son.*"}});
db.users.findOne({"username" : {$regex : "son"}});
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:
Veja: http://www.mongodb.org/display/DOCS/Advanced+Queries#AdvancedQueries-RegularExpressions
fonte
db.users.findOne({"username" : /.*son.*/});
também poderia ser um exagero e o regex poderia simples ser/son/
{ username: /son/ }
https://docs.mongodb.com/manual/reference/sql-comparison/
http://php.net/manual/en/mongo.sqltomongo.php
MySQL
MongoDB
fonte
A partir da versão 2.4, você pode criar um índice de texto nos campos para pesquisar e usar o operador $ text para consulta.
Primeiro, crie o índice:
db.users.createIndex( { "username": "text" } )
Em seguida, para pesquisar:
db.users.find( { $text: { $search: "son" } } )
Benchmarks (~ 150K documentos):
Notas:
db.collection.createIndex( { "$**": "text" } )
.fonte
Como esse é um dos primeiros hits nos mecanismos de pesquisa, e nenhuma das opções acima parece funcionar no MongoDB 3.x, aqui está uma pesquisa de regex que funciona:
Não há necessidade de criar um índice extra ou similar.
fonte
Aqui está o que você deve fazer se estiver conectando o MongoDB através do Python
você também pode usar um nome de variável em vez de 'Son' e, portanto, a concatenação de strings.
fonte
.*${value}.*
} #Maneira mais simples de realizar esta tarefa
Se você deseja que a consulta faça distinção entre maiúsculas e minúsculas
Se você deseja que a consulta não diferencie maiúsculas de minúsculas
fonte
resposta ideal sua opção de índice de uso i para não fazer distinção entre maiúsculas e minúsculas
fonte
Isso deve fazer o trabalho
O
i
está ali apenas para evitar restrições de correspondência casos isolados de cartas.Você pode verificar a documentação $ regex na documentação do MongoDB. Aqui está um link: https://docs.mongodb.com/manual/reference/operator/query/regex/
fonte
Como ignorar tags HTML em uma correspondência RegExp:
Provavelmente é muito fácil se transformar em um filtro de agregação do MongoDB.
fonte