#python #database #find #pymongo
#python #База данных #Найти #pymongo
Вопрос:
Имея эту коллекцию:
{"_id":"5f96dbad2c127e4cdc6444eb","name":"FIRST NAME"}
{"_id":"5f96dbad2c127e4cdc6444eb","name":"SECOND NAME"}
Я хочу найти, где значение в базе данных находится в нижнем регистре и без пробела. Например, эта находка {name:"firstname"}
вернет none , и она не вернет none, если я изменю значение (не обновление) на нижний регистр и уберу пробел. Может быть, лучше выполнить преобразование перед вставкой в базу данных, но я хотел попробовать это.
from pymongo import MongoClient
client = MongoClient('localhost', 27017)
db = client.test_database
collection = db.test_collection
result = collection.find()
for i in result:
i['name'] = i['name'].lower().replace(' ', '')
if value_to_search == i['name']:
return True
Я бы не хотел использовать for
цикл, хочу знать, как это сделать в запросе mongo (если это возможно)
Комментарии:
1. Вы спрашиваете, поддерживает ли MongoDB триггеры вставки?
2. Хммм…. Нет, например
find()
, вернуть все значения в коллекцию, верно? « value_to_search=»firstname» для i в коллекции.find(): i[‘name] = i[‘name’].lower().replace(‘ ‘, «) if(value_to_search == i[‘name] ) возвращает true; « Итак, что яхотел бы сделать, не использовать for , хотите знать, как это сделать в запросе mongo (если это возможно сделать)3. Рассматривали ли вы возможность использования $regex ?
4. Нет, но что вы имеете в виду? Потому что, регулярное выражение, я его не вижу. Если шаблон
firstname
(мое значение поиска), вернет none, потому что в БД естьFirst Name