MongoDB может изменить значение в БД (не обновлять), прежде чем получить результат find ()? Pymongo

#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