在 Python 中使用 MongoDB 的特定条目的 $addFields
$addFields for specific entry using MongoDB in Python
我正在使用 Python 中的 pymongo 库来更新我的 MongoDB 中的特定条目,特别是使用之前使用聚合管道 $set 的 db.update_one() 函数但现在在使用 $addFields 时失败了。我正在尝试插入条目:
'Client Facing': ['No']
进入对象:
{
'Content Format': ['Presentation'],
'Category': ['Systems w/TPS'],
'Offering Market': ['Enterprise Linux Market'],
'Offering Portfolio': ['Enterprise Linux'],
'Offering Name': ['HANA excl L Systems - POWER9 H924 Scale-Out'],
'Keywords': ['SAP'],
'Language': ['English'],
'Additional Information': ['prepare-atl'],
'Organization Owner': ['Technology'],
'Brand': ['Cognitive Systems'],
'Content Owner Group': ['Technology - Systems']
}
所以我使用 update_one() 和参数:{'seismic_id': 12345}(这是过滤器),
{'$addFields': {'seismic_properties_obj.Client Facing': ['No']}}
但是,当我这样做时失败并出现错误:
pymongo.errors.WriteError: Unknown modifier: $addFields. Expected a valid update modifier or pipeline-style update specified as an array, full error: {'index': 0, 'code': 9, 'errmsg': 'Unknown modifier: $addFields. Expected a valid update modifier or pipeline-style update specified as an array'}
您可以使用以下代码段
DB['assets'].update_one(
{'seismic_id': 12345},
{'$set':
{'seismic_properties_obj.Client Facing': 'No'}
}
)
这会找到记录seismic_id
= 12345,然后添加属性 seismic_properties.Client Facing
并设置为'No'
注意: 在这种情况下,$addField
不是有效的运算符,因为它在聚合框架中使用。相反,使用 $set
允许您 add/update 特定键而无需更新整个文档。
我正在使用 Python 中的 pymongo 库来更新我的 MongoDB 中的特定条目,特别是使用之前使用聚合管道 $set 的 db.update_one() 函数但现在在使用 $addFields 时失败了。我正在尝试插入条目:
'Client Facing': ['No']
进入对象:
{
'Content Format': ['Presentation'],
'Category': ['Systems w/TPS'],
'Offering Market': ['Enterprise Linux Market'],
'Offering Portfolio': ['Enterprise Linux'],
'Offering Name': ['HANA excl L Systems - POWER9 H924 Scale-Out'],
'Keywords': ['SAP'],
'Language': ['English'],
'Additional Information': ['prepare-atl'],
'Organization Owner': ['Technology'],
'Brand': ['Cognitive Systems'],
'Content Owner Group': ['Technology - Systems']
}
所以我使用 update_one() 和参数:{'seismic_id': 12345}(这是过滤器),
{'$addFields': {'seismic_properties_obj.Client Facing': ['No']}}
但是,当我这样做时失败并出现错误:
pymongo.errors.WriteError: Unknown modifier: $addFields. Expected a valid update modifier or pipeline-style update specified as an array, full error: {'index': 0, 'code': 9, 'errmsg': 'Unknown modifier: $addFields. Expected a valid update modifier or pipeline-style update specified as an array'}
您可以使用以下代码段
DB['assets'].update_one(
{'seismic_id': 12345},
{'$set':
{'seismic_properties_obj.Client Facing': 'No'}
}
)
这会找到记录seismic_id
= 12345,然后添加属性 seismic_properties.Client Facing
并设置为'No'
注意: 在这种情况下,$addField
不是有效的运算符,因为它在聚合框架中使用。相反,使用 $set
允许您 add/update 特定键而无需更新整个文档。