我正在尝试使用包含-upsert的csv和Mongoimport来更新集合中每个文档中的单个字段。 但是,该过程会删除文档中的所有其他字段。
我有一个包含以下文档的图书集:
{
"_id" : "knOIv8ZUUK",
"Price" : 2.2,
"Title" : "Rats Ahoy"
}
{
"_id" : "okYEGuWznv",
"Price" : 3.3,
"Title" : "Friendly Fish"
}
csv文件:
_id,Price
knOIv8ZUUK,2.2
okYEGuWznv,3.3
使用以下方式导入:
mongoimport --db local --collection Books --upsert --type csv
--headerline --file c:\import\newPrice
删除标题字段
的结果{
"_id" : "knOIv8ZUUK",
"Price" : 2.2
}
{
"_id" : "okYEGuWznv",
"Price" : 3.3
}
我错误地认为Upsert会更新导入的字段。 那么我可以使用另一个进程来更新大量文档中的1个字段吗? 感谢
答案 0 :(得分:1)
答案 1 :(得分:1)
来自mongoimport --upsertFields doc 您可能需要使用模式合并:
将与导入文件中的文档匹配的现有文档与新文档合并。 mongoimport将插入所有其他文件。导入期间合并匹配文档描述了如何使用--mode merge。
并指定字段名称,默认为'_id'
--mode merge --upsertFields <fieldname>
所以就你的情况而言
--mode merge --upsertFields