MongoDB的mongoimport UPSERT

MongoDB的mongoimport UPSERT

问题描述:

我试图做一个批量更新有以下MongoDB的mongoimport UPSERT

mongoimport -d my_db -c db_collection -upsertFields email ~/Desktop/update_list.csv 

,我试图导入看起来像这样的CSV。

email, full_name 
[email protected],* 
[email protected],mongodb 

它应该检查电子邮件列作为查询arg并相应地更新全名。但是,没有导入,它遇到错误。

exception:Failure parsing JSON string near: [email protected] 
[email protected],abc 
imported 0 objects 
encountered 99398 errors 

问题在哪里?我应该怎么做呢?

我认为CSV文件中的数据必须用双引号括起来。

+0

我重新保存了我的csv,所以我的数据都是双引号。我设法让它全部导入,但没有更新。我最终有重复。 – crayfish 2011-02-07 05:09:21

Add --type csv

否则,它假定您的输入是json。

此外,看起来应该通过--headerline使它使用文件的第一行作为标题。

+0

我添加了args --type csv和--headerline,都是导入的,但没有更新。我最终有重复。 – crayfish 2011-02-07 05:07:55

+1

Mongoimport无法更新现有记录......它只会插入新记录。在运行导入之前,您可以尝试删除现有集合(您可以使用--drop标志来执行mongo导入)。看到完整的文档在这里:http://www.mongodb.org/display/DOCS/Import+Export+Tools – jared 2011-02-07 13:56:19

您的mongoimport命令缺少--upsert选项,与--upsertFields结合使用时需要。尝试:

mongoimport -d my_db -c db_collection --upsert --upsertFields email ~/Desktop/update_list.csv