2016-03-15 36 views
1

我希望我可以使用“row”进行$ set设置,因为它包含我想要更新的所有数据,但会得到以下内容。我的代码如下:没有指定所有参数的Upsert

C:\蒙戈脚本> csvimporter.py 回溯(最近最后一次通话): .... pymongo.errors.WriteError:空更新路径无效。

def import_fame_dump(input_file='AB.csv'): 
    fame_export = csv.DictReader(open(input_file), dialect='excel') 
    leads = [] 

    fame_export.fieldnames + ['ImportDate'] 

for row in fame_export: 
    row['ImportDate'] = datetime.datetime.utcnow() 
    #leads.append(row) 
    result = db.leads.update_one({ 
     'match1': row['match1'], 
     'match2': row['match2'], 
     'match3': row['match3'], 
     'match4': row['match4'] 
     }, {"$set": row }, 
     upsert=True) 

非常感谢您的任何帮助。

回答

1

打印出“row”的值,或者在调试器中设置断点,以便知道要发送给MongoDB的内容。

在某些时候你有一个空字符串作为重点,这样做的这相当于:

> db.collection.update({match1: '1'}, {$set: {'': 2}}) 
WriteResult({ 
    "nMatched" : 0, 
    "nUpserted" : 0, 
    "nModified" : 0, 
    "writeError" : { 
     "code" : 56, 
     "errmsg" : "An empty update path is not valid." 
    } 
})