python - 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}})。有任何想法吗?
解决方案
在 Belly Buster 的帮助下找到了答案。
new_value = {"$inc": {'NORMAL.$[type].' + game_type.upper() + '.1': 1}}
filter_query = [{'type.' + game_type.upper(): current_score}]
这将根据现有数据使其动态化。
推荐阅读
- reactjs - 何时使用 inputRef.current 而不是 this.inputRef React.js?
- twitter-bootstrap - 如何使用 npm 2 不同的引导程序版本进行安装?
- python - Telegram bot 如何通过 nltk python 回答问题
- sql - ISNULL 或 COALESCE 不适用于加入和枢轴操作
- access-token - 如何从 Google Assistant 撤消访问令牌?
- python-3.x - Pygame 键只运行一次
- python - 为什么 Keras/tensorflow 的 sigmoid 和交叉熵精度低?
- qt - qml 应用程序未显示主窗口
- c++ - 为什么单击编辑文本后不显示qml虚拟键盘,而我在.pro和main.cpp中调用插件
- java - Spring security - 休息服务的自定义过滤器和入口点