2015-03-31 98 views
2

我在使用Pymongo添加到列表和更新某些字段时,在MongoDB中更新文档时遇到了问题。

总之,我想:

  1. 值添加到列表。
  2. 更新一些字段。
  3. 使用单个更新语句。

我曾尝试2种方法,但都不起作用:

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' 前缀场 '$ addToSet' 是不是有效的存储。

我的预期结果:

前:

{ 
    'username':'user1', 
    'item': {'cars':['Merc','Ferrari'],'house':1} 
} 

预期后:

{ 
    'username':'user1', 
    'name': {'first':'Marie', 'last':'Bender'}, 
    'item': {'cars':['Merc','Ferrari','BMW'],'house':1} 
} 

回答

4

你的第二次尝试接近,但你需要使用$set操作员设置的值name

user_detail2 = { 
    '$set': {'name': {'first': 'Marie', 'last': 'Bender'}}, 
    '$addtoset': {'items.cars': 'BMW'}  
} 
+0

谢谢约翰尼,它的工作:) – Qmage 2015-03-31 03:05:19

相关问题