在 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 特定键而无需更新整个文档。