1

我正在尝试将数据导出到 CSV 文件,但由于某种原因,我没有在 CSV 文件中获取任何数据。

我有一个名为“test”的数据库和一个名为“people”的集合。people 集合的内容是(json 导出工作!):

{"_id":{"$oid":"55937ce0c64ddad5023a9570"},"name":"Joe Bloggs","position":"CE"}
{"_id":{"$oid":"55937d57c64ddad5023a9571"},"name":"Jane Bloggs","position":"CE"}
{"_id":{"$oid":"55937d62c64ddad5023a9572"},"name":"Peter Smith","position":"CE"}
{"_id":{"$oid":"55937d78c64ddad5023a9573"},"name":"Sarah Smith","position":"STL"}

我正在尝试使用以下命令将此数据导出到 CSV 文件中:

mongoexport --type=csv -d test -c people --fieldFile c:\dev\peopleFields.txt --out c:\dev\people.csv

当我运行这个命令时,响应是:

2015-07-01T14:56:36.787+0800   connected to: localhost
2015-07-01T14:56:36.787+0800   exported 4 records

peopleFields.txt 的内容是:

ID
Name
Position

people.csv 文件的结果输出是:

ID,Name,Position
"","",""
"","",""
"","",""
"","",""

有人可以向我解释我做错了什么吗?

4

2 回答 2

1

您在这里缺少的是该--fieldFile选项不是“映射”,而只是您要从集合中导出的所有字段的“列表”。

因此,要真正“匹配”集合中存在的字段,内容应该是:

_id
name
position

由于您拥有的名称与任何字段都不匹配,因此对于您指定的字段数,您将获得四行(每个文档一个)空白字段输出。

mongoexport实用程序本身不会“映射”到备用名称。如果您想要不同的名称来存储它们在您的集合中的方式,那么您将不得不自己更改输出。

输出也是如此,因为任何ObjectId值都将作为该文字字符串输出。

于 2015-07-01T07:16:04.167 回答
1

您可以使用以下命令导出 csv 文件中的数据:

mongoexport --db dbName --collection collectionName  --type=csv --fields name,position --out fileName.csv

根据文档

1)fieldFile允许您指定要包含在导出中的字段。

2) 文件每行必须只有一个字段,并且行必须以 LF 字符 (0x0A) 结尾。

您在文本文件中使用的名称(ID、名称、位置)与集合中的名称(_id、名称、位置)不同,因此您将导出空字段。

于 2015-07-01T07:35:06.087 回答