Не срабатывает метод update_one библиотеки pymongo
Создал метод, изменяющий данные пользователя в базе данных mongodb для приложения fastapi.
import motor.motor_asyncio
client = motor.motor_asyncio.AsyncIOMotorClient(MONGO_DB)
client.get_io_loop = asyncio.get_running_loop
database = client.mydb
users = database.get_collection('users')
async def update_user(email: str, data: dict) -> bool:
if len(data) < 1:
return False
user = await users.find_one({"email": email})
if user:
updated_user = await users.update_one({"email": email}, {"$set": data})
if updated_user:
return True
return False
В итоге метод возвращает True, но данные в базе данных не изменяются. Всю голову сломал, ума не приложу в чем проблема. При этом методы find_one и insert_one срабатывают. Помогите пожалуйста, уже три дня мучаюсь с этой проблемой.
Ответы (1 шт):
Автор решения: SerjK
→ Ссылка
Попробуйте использовать метод:
find_one_and_update(filter, update, projection=None, sort=None, upsert=False, return_document=False, array_filters=None, hint=None, session=None, **kwargs)Вы проверяете при обновлении на истину, в то время как возвращается
https://pymongo.readthedocs.io/en/3.12.0/api/pymongo/results.html#pymongo.results.UpdateResult