2011-02-06 101 views
3

我試圖做一個批量更新有以下MongoDB的mongoimport UPSERT

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

,我試圖導入看起來像這樣的CSV。

email, full_name 
[email protected],stackoverflow 
[email protected],mongodb 

它應該檢查電子郵件列作爲查詢arg並相應地更新全名。但是,沒有導入,它遇到錯誤。

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

問題在哪裏?我應該怎麼做呢?

回答

0

我認爲CSV文件中的數據必須用雙引號括起來。

+0

我重新保存了我的csv,所以我的數據都是雙引號。我設法讓它全部導入,但沒有更新。我最終有重複。 – crayfish 2011-02-07 05:09:21

6

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

11

您的mongoimport命令缺少--upsert選項,與--upsertFields結合使用時需要。嘗試:

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