Upsert而不指定所有参数

时间:2016-03-15 13:21:19

标签: mongodb pymongo

我希望我可以使用" row"因为它包含我想要更新的所有数据,但得到以下内容。我的代码如下:

c:\ mongo scripts> csvimporter.py Traceback(最近一次调用最后一次): .... 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 个答案:

答案 0 :(得分:1)

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

在某些时候,你有一个空字符串作为键,相当于:

8 - 4 = 4