首页 > 解决方案 > PYMONGO-更新列表中的特定项目

问题描述

在发布https://www.youtube.com/watch?v=XRXjJRJ03_A MongoDB 中精确元素数组中的更新字段之前,我已在下面的链接中检查了有关此问题的信息

我的数据

{
    '_id': ObjectId('608b07c8f2cd2853333e1892'),
    'DISNAME': '92bricks#4696',
    'AVATAR': 'https://cdn.discordapp.com/avatars/306429381948211210/bcbd8bffe41170afedf18bebe030c675.webp?size=1024',
    'IGN': [{
        'Call Of Duty Mobile': 'BRICKS'
    }],
    'GAMES': ['Call Of Duty Mobile'],
    'TEAMS': ['mcdonalds'],
    'TITLES': ['PCG'],
    'RANKED': [{
        '1V1': [0, 0, 0]
    }, {
        '2V2': [0, 0, 0]
    }, {
        '3V3': [0, 0, 0]
    }, {
        '4V4': [0, 0, 0]
    }, {
        '5V5': [0, 0, 0]
    }],
    'NORMAL': [{
        '1V1': [0, 0, 0]
    }, {
        '2V2': [0, 0, 0]
    }, {
        '3V3': [0, 0, 0]
    }, {
        '4V4': [0, 0, 0]
    }, {
        '5V5': [0, 0, 0]
    }],
    'TOURNAMENT_WINS': 0,
    'TIMESTAMP': 'Thu Apr 29 12:21:53 2021'
}

我正在尝试更新/增加 NORMAL.$.1V1.1(0 数组中的中间项)

我试过 {'$set': {'NORMAL.$.1V1.1': 1}} 但它一直抛出错误full error: {'index': 0, 'code': 2, 'errmsg': '位置运算符没有从查询中找到所需的匹配项。'}

我上面链接的视频说要按照我上面发布的语法构建逻辑({'$set': {'NORMAL.$.1V1.1': 1}})。有任何想法吗?

标签: pythonarrayspymongo

解决方案


在 Belly Buster 的帮助下找到了答案。

new_value = {"$inc": {'NORMAL.$[type].' + game_type.upper() + '.1': 1}}
filter_query = [{'type.' + game_type.upper(): current_score}]

这将根据现有数据使其动态化。


推荐阅读