Arrays mongoexport csv输出最后一个数组值

Arrays mongoexport csv输出最后一个数组值,arrays,mongodb,csv,export,Arrays,Mongodb,Csv,Export,受服务器故障中这个问题的启发 我正在使用mongoexport将一些集合导出到CSV文件中,但是当我尝试将数组的最后一个成员作为目标字段时,我无法使其正确导出 我正在使用的命令 mongoexport -d db -c collection -fieldFile fields.txt --csv > out.csv 我收藏的一件物品: { "id": 1, "name": "example", "date": [ {"date": ""},

受服务器故障中这个问题的启发

我正在使用mongoexport将一些集合导出到CSV文件中,但是当我尝试将数组的最后一个成员作为目标字段时,我无法使其正确导出

我正在使用的命令

mongoexport -d db -c collection -fieldFile fields.txt --csv > out.csv
我收藏的一件物品:

{
    "id": 1,
    "name": "example",
    "date": [
        {"date": ""},
        {"date": ""},
    ],
    "status": [
         "true",
         "false",
    ],
}
我可以访问数组的第一个成员,写入如下字段

name
id
date.0.date
status.0
有没有一种方法可以在不知道数组长度的情况下访问我数组的最后一个

因为以下方法不起作用:

name
id
date.-1.date
status.-1

知道正确的符号吗?或者如果根本不可能的话?

在不知道数组长度的情况下引用数组的最后一个元素是不可能的,因为符号是
array\u field.index
,其中索引位于[0,length-1]。您可以使用聚合框架创建要导出的数据的视图,使用$out将其临时保存到集合中,然后mongoexport。例如,对于您的文档,您可以

db.collection.aggregate([
    { "$unwind" : "$date" },
    { "$group" : { "_id" : "$_id", "date" : { "$last" : "$date" } } },
    { "$out" : "temp-for-csv" }
])
以便仅获取每个文档的最后日期,并将其输出到csv的收集临时文件


您可以使用投影运算符仅返回数组中的最后一个元素,但这在聚合中不可用,并且mongoexport只接受查询规范,而不接受投影规范,因为
--fields
--fieldFile
选项应该足够了。使用带有mongoexport投影的查询可能是一个很好的功能请求。

感谢您的回答是的,这可能是一个很好的请求,因为我想避免编写更多的脚本。使用字段本身应该是有用的