Запрос MongoDB не обновляет запись документа
Я используюpymongo
версия 4.3.3 иmotor
версия 3.1.2
Это мой код:
async def add_reputation_to_db(
self,
guild_id: hikari.Snowflake,
user_recieve_id: hikari.Snowflake,
) -> None:
await self._guild_collection.update_one({'_id': guild_id}, {'$inc': {f'{user_recieve_id}.reputation': 1}})
У меня нет ошибок, но проблема в том, что база данных не обновляет никаких данных, если я использую точку для перехода к определенному ключу в словаре, в моем случае это так.f'{user_recieve_id}.reputation'
.
Иерархия моего документа выглядит следующим образом:
{
'_id': guild_id,
'user_id': {
'reputation': 123
}
}
Ноuser_id
должен быть идентификатором пользователя в виде числа.
Искал решения в интернете и ChatGPT, но результатов это мне не дало.
1 ответ
Кажется, этот фрагмент кода работает. Обратите внимание: если у вас нет подходящего_id
ничего не будет установлено.
from pymongo import MongoClient
db = MongoClient()['mydatabase']
guild_id = 1
user_recieve_id = 'user1'
coll.insert_one({"_id": guild_id})
coll.update_one({'_id': guild_id}, {'$inc': {f'{user_recieve_id}.reputation': 1}})
print(coll.find_one())
coll.update_one({'_id': guild_id}, {'$inc': {f'{user_recieve_id}.reputation': 1}})
print(coll.find_one())
принты:
{'_id': 1, 'user1': {'reputation': 1}}
{'_id': 1, 'user1': {'reputation': 2}}