From bc7672c1da4aa0d2a3878aba4f3fa41e6c1b14d8 Mon Sep 17 00:00:00 2001 From: kievzenit Date: Mon, 11 Aug 2025 18:34:10 +0300 Subject: [PATCH] Revert "fixed PyMongoStorage update_data method implementation" This reverts commit 86170e1cb91cce4967118f16e38eb263197caef0. --- aiogram/fsm/storage/pymongo.py | 25 ++++++++----------------- 1 file changed, 8 insertions(+), 17 deletions(-) diff --git a/aiogram/fsm/storage/pymongo.py b/aiogram/fsm/storage/pymongo.py index 5b891679..d547bb2f 100644 --- a/aiogram/fsm/storage/pymongo.py +++ b/aiogram/fsm/storage/pymongo.py @@ -123,23 +123,14 @@ class PyMongoStorage(BaseStorage): async def update_data(self, key: StorageKey, data: Mapping[str, Any]) -> Dict[str, Any]: document_id = self._key_builder.build(key) - update_result = {} - if not data: - update_result = await self._collection.find_one_and_update( - filter={"_id": document_id}, - update={"$unset": {"data": 1}}, - upsert=True, - return_document=True, - projection={"_id": 0}, - ) - else: - update_result = await self._collection.find_one_and_update( - filter={"_id": document_id}, - update={"$set": {"data": data}}, - upsert=True, - return_document=True, - projection={"_id": 0}, - ) + update_with = {f"data.{key}": value for key, value in data.items()} + update_result = await self._collection.find_one_and_update( + filter={"_id": document_id}, + update={"$set": update_with}, + upsert=True, + return_document=True, + projection={"_id": 0}, + ) if not update_result: await self._collection.delete_one({"_id": document_id}) return update_result.get("data", {})