如何更新 mongoDB 中特定嵌套字典中的项目

How do I update an item in a specific nested dictionary in mongoDB

我在 MongoDB 中在线存储了 3 部词典,我想访问 特定词典中的特定项目并用不同的项目更新它,但我不知道该怎么做。我尝试了多种方法,但 none 似乎有效。我不想通过字典的索引访问字典中的项目,因为会有更多的字典,我每次都需要编辑代码。我试图用这段代码更新它,但它不起作用。有人知道解决这个问题的方法吗?

@client.command()
async def warn(ctx, user: discord.User, reason: Optional[str] = None):
    await ctx.message.delete()
    guild_id = ctx.guild.id
    warn_id = f"{uid.uuid1()}"  # Randomly generated warning ID
    if reason is None:
        reason = "No reason given!"  # reason
    warn_count = 1
    for i in role_ids:
        if role_ids[i]["_id"] == ctx.guild.id:
            for _user in range(0, len(role_ids[i]["logs"]["warn_logs"]["users"])):
                # if role_ids[i]["logs"]["warn_logs"]["users"][_user]:
                if f"{user.id}" in role_ids[i]["logs"]["warn_logs"]["users"][_user]:
                    for e in range(0, len(role_ids[i]["logs"]["warn_logs"]["users"][_user][f"{user.id}"]["warnings"])):
                        if f"warning_{warn_count}" in \
                                role_ids[i]["logs"]["warn_logs"]["users"][_user][f"{user.id}"]["warnings"][e]:
                            warn_count += 1
                            pass
                        else:
                            # role_ids[i]["logs"]["warn_logs"]["users"][_user][f"{user.id}"]["warnings"][e+1]
                            my_dict = {"$set": {
                                f"warning_{warn_count}": {"author": f"{ctx.author.id}",
                                                          "reason": reason,
                                                          "warn_id": warn_id},
                                "warning_0":""}}
                            mongo_col.find_one_and_update({"_id": ctx.guild.id, "logs": {
                                "warn_logs": {"users": [{f"{user.id}": {"warnings": [{"warning_0": ""}]}}]}}}, my_dict)

所以我找不到解决问题的方法,但我想到了一种替代方法,该方法可能效率不高,但效果很好。我从 mongodb 集合中取出所有数据并将其保存在本地字典变量中,然后将本地变量用于 search/edit 数据并使用“[=13] 将其回传到 mongodb =]”方法。