Я ищу оператора, который позволяет мне проверить, содержит ли значение поля определенную строку.
Что-то вроде:
db.users.findOne({$contains:{"username":"son"}})
Это возможно?
Вы можете сделать это с помощью следующего кода.
db.users.findOne({"username" : {$regex : ".*son.*"}});
db.users.findOne({"username" : {$regex : "son"}});
Поскольку оболочка Mongo поддерживает регулярные выражения, это вполне возможно.
Если мы хотим, чтобы в запросе не учитывался регистр, мы можем использовать опцию «i», как показано ниже:
Смотрите: http://www.mongodb.org/display/DOCS/Advanced+Queries#AdvancedQueries-RegularExpressions
источник
db.users.findOne({"username" : /.*son.*/});
что это также может быть излишним, а регулярное выражение может быть простым/son/
{ username: /son/ }
https://docs.mongodb.com/manual/reference/sql-comparison/
http://php.net/manual/en/mongo.sqltomongo.php
MySQL
MongoDB
источник
Начиная с версии 2.4, вы можете создавать текстовые индексы в полях для поиска и использовать оператор $ text для запросов.
Сначала создайте индекс:
db.users.createIndex( { "username": "text" } )
Затем для поиска:
db.users.find( { $text: { $search: "son" } } )
Тесты (~ 150 тыс. Документов):
Ноты:
db.collection.createIndex( { "$**": "text" } )
.источник
Так как это один из первых попаданий в поисковых системах, и ни один из вышеперечисленных, похоже, не работает для MongoDB 3.x, вот один поиск по регулярному выражению, который работает:
Не нужно создавать и дополнительный индекс или тому подобное.
источник
Вот что вам нужно сделать, если вы подключаете MongoDB через Python
Вы также можете использовать имя переменной вместо 'Son' и, следовательно, конкатенацию строк.
источник
.*${value}.*
}Самый простой способ выполнить эту задачу
Если вы хотите, чтобы в запросе учитывался регистр
Если вы хотите, чтобы в запросе не учитывался регистр
источник
идеальный ответ его индекс использования я вариант для без учета регистра
источник
Это должно сделать работу
Это
i
просто для того, чтобы не допустить ограничения совпадения отдельных букв.Вы можете проверить документацию $ regex в документации MongoDB. Вот ссылка: https://docs.mongodb.com/manual/reference/operator/query/regex/
источник
Как игнорировать теги HTML в совпадении с RegExp:
Это, вероятно, очень легко превратить в агрегирующий фильтр MongoDB.
источник