mongoDB mongoimport upsert

cra*_*ish 4 upsert mongodb

我正在尝试使用以下内容进行批量更新

mongoimport -d my_db -c db_collection -upsertFields email ~/Desktop/update_list.csv
Run Code Online (Sandbox Code Playgroud)

我想要导入的csv看起来像这样.

email, full_name
stack@overflow.com,stackoverflow
mongo@db.com,mongodb
Run Code Online (Sandbox Code Playgroud)

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

exception:Failure parsing JSON string near: abc@sa
abc@sasa.com,abc
imported 0 objects
encountered 99398 errors
Run Code Online (Sandbox Code Playgroud)

问题出在哪儿?我应该怎么做?

And*_*ggs 12

您的mongoimport命令缺少--upsert选项,它与--upsertFields结合使用.尝试:

mongoimport -d my_db -c db_collection --upsert --upsertFields email ~/Desktop/update_list.csv
Run Code Online (Sandbox Code Playgroud)

  • 从 3.0.0 版开始:--upsertFields 现在意味着 --upsert。因此,您可能更喜欢使用 --upsertFields 而不是 --upsert。https://docs.mongodb.org/manual/reference/program/mongoimport/#cmdoption--upsert (2认同)

jar*_*red 6

添加--type csv

否则它假定您的输入是json.

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


小智 0

我假设 CSV 文件中的数据必须用双引号引起来。