我无法在MongoDB中更新文档,包括使用Pymongo添加到列表和更新某些字段。
总结一下,我想:
我尝试了两种方法,但两种方法都不起作用:
key = {'username':'user1'}
user_detail = {
'name':{'first':'Marie', 'last':'Bender'},
'items':{'$addtoset':{'cars':'BMW'}}
}
user_detail2 = {
'name':{'first':'Marie', 'last':'Bender'},
'$addtoset':{'items.cars':'BMW'}
}
mongo_collection.update(key, user_detail, upsert=True)
mongo_collection.update(key, user_detail2, upsert=True)
错误消息:美元($)前缀字段' $ addToSet' in' $ addToSet'对存储无效。
我的预期结果:
在:
{
'username':'user1',
'item': {'cars':['Merc','Ferrari'],'house':1}
}
预期之后:
{
'username':'user1',
'name': {'first':'Marie', 'last':'Bender'},
'item': {'cars':['Merc','Ferrari','BMW'],'house':1}
}
答案 0 :(得分:4)
您的第二次尝试更接近,但您需要使用$set
运算符来设置name
的值:
user_detail2 = {
'$set': {'name': {'first': 'Marie', 'last': 'Bender'}},
'$addtoset': {'items.cars': 'BMW'}
}