Mongodb mongoexport字段从子文档到csv

Mongodb mongoexport字段从子文档到csv,mongodb,Mongodb,我正试图从子文档导出字段,但运气不佳。 这是我的语法 mongoexport -d test -c accounts -f account_number,situses.coordinates -o coordinates.csv --type=csv 输出包括科目编号,但不包括子文档中的坐标字段。 根据法律,这应该是有效的 下面将导出整个situses子文档,但我只需要一个字段 mongoexport -d test -c accounts -f account_number,situs

我正试图从子文档导出字段,但运气不佳。
这是我的语法

mongoexport -d test -c accounts -f account_number,situses.coordinates -o coordinates.csv --type=csv  
输出包括科目编号,但不包括子文档中的坐标字段。 根据法律,这应该是有效的

下面将导出整个situses子文档,但我只需要一个字段

mongoexport -d test -c accounts -f account_number,situses -o coordinates.csv --type=csv
我只是引用子文档字段有误还是怎么的

我正在运行Mongodb 3.0.4

其他信息

以下语法适用于早期版本的Mongodb(2.6.x?)。注意subdoc.0.fieldname的
语法

mongoexport -d test -c accounts -f account_number,situses.0.coordinates -o coordinates.csv --csv  

似乎已删除对直接引用子文档的支持

您的语法有错误

从mongo版本3.0.0中,mongoexport删除了--type=csv选项。使用--type=csv选项为输出指定csv格式

你应使用:

mongoexport --db tests --collection accounts --type=csv --fields account_number,situses --out coordinates.csv
对于嵌套字段,应使用:

mongoexport --db tests --collection accounts --csv --fields 'account_number,situses.0.coordinates'  --out /home/vishwas/c1.csv 
使用子文档为mongo 3.0编辑:

mongoexport --db tests --collection accounts --csv --fields 'account_number,situses.0.coordinates'  --out /home/vishwas/c1.csv 
您需要使用子文档中的必填字段创建单独的集合,如-

db.test.aggregate({"$unwind":"$situses"},{"$project":{"_id":0,"account_number":1,"siteUsesCo":"$situses.coordinates"}},{"$out" : "forcsv"}) 
如果希望子文档中只有一个字段,请使用聚合,如-

db.test.aggregate({"$unwind":"$situses"},{"$limit":1},{"$project":{"_id":0,"account_number":1,"siteUsesCo":"$situses.coordinates"}},{"$out" : "forcsv"})
然后从
forcsv
集合导出-

mongoexport --db test --collection forcsv --csv --fields 'account_number,siteUsesCo'  --out coordinates.csv

导出delete collection
forcsv

后,这似乎是一个已知的缺陷,将在3.0.5中修复。

看这个,

还有一个解决方案,您可以在其中灵活配置输出

mongo host:port/test --quiet query.js -u username -p passw0rd > accounts.csv
和query.js:

db = db.getSiblingDB('test');

db.getCollection('accounts').find({}, {account_number:1, situses:1, _id:0}).forEach(
    function(item_data) { print(`${item_data.account_number},${item_data.situses[0].coordinates}`); });

我已经在使用--type=csv,并且将-f改为--fields没有任何区别。您的示例代码引用的是子文档,而不是子文档中的字段。当引用subdoc.fieldname时,它不起作用。与文档冲突。@SteveO7请尝试我的编辑。它也适用于嵌套字段。我怀疑您可能在版本2.x上。请参阅我对原始问题的更新。@SteveO7我的错。我使用Mongo2.x。我找到了一种导出方法,创建一个单独的必填字段集合,然后导出该集合。请看我的编辑。