tatsuki1
@tatsuki1

Проблема с MongoDB, поможете?

Пишу одну систему с базой данных МонгоДБ, и я хочу чтобы, когда БД по ид сервера пустая, то заносились данные, а когда ид сервера совпадает с ид сервера который в базе данных записан, данные заменялись, а не записывались снова.

@commands.command()
    async def welcome(self, ctx, channel: discord.TextChannel):
        if ctx.message.author.guild_permissions.manage_messages:
            result = channel1.find_one({"guild_id": ctx.guild.id, "channel_id": channel.id})
            if result is None:
                channel1.insert_one({f"guild_id": ctx.guild.id, "channel_id": channel.id})
                await ctx.send(f'{ctx.author.mention}, канал успешно установлен на {channel.mention}.')
            elif result is not None:
                channel1.update_one({"guild_id": ctx.guild.id}, {"$set": {"channel_id": channel.id}})
                await ctx.send(f'{ctx.author.mention}, канал изменён на {channel.mention}.')
        else:
            await ctx.send(f'{ctx.author.mention}, вам нужны права на управление сообщениями.')
  • Вопрос задан
  • 98 просмотров
Пригласить эксперта
Ответы на вопрос 2
Vindicar
@Vindicar
RTFM!
Метод update() не подойдет?
Ответ написан
Комментировать
По-моему, вместо
result = channel1.find_one({"guild_id": ctx.guild.id, "channel_id": channel.id})
            if result is None:
                channel1.insert_one({f"guild_id": ctx.guild.id, "channel_id": channel.id})
                await ctx.send(f'{ctx.author.mention}, канал успешно установлен на {channel.mention}.')
            elif result is not None:
                channel1.update_one({"guild_id": ctx.guild.id}, {"$set": {"channel_id": channel.id}})
                await ctx.send(f'{ctx.author.mention}, канал изменён на {channel.mention}.')

Просто в опциях запроса update_one указать upsert=True.

https://docs.mongodb.com/manual/reference/method/d...
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы