![](/img/trans.png)
[英]How to merge an array field in multiple documents into a single output array in MongoDB and mongoexport to csv
[英]mongoexport csv output last array values
在服务器故障中受此问题启发https://serverfault.com/questions/459042/mongoexport-csv-output-array-values
我正在使用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_field.index
,其中索引位于[0,length-1]中。 您可以使用聚合框架创建要导出的数据的视图,将其临时保存到带有$ out的集合中,然后进行mongoexport。 例如,对于您的文档,您可以
db.collection.aggregate([
{ "$unwind" : "$date" },
{ "$group" : { "_id" : "$_id", "date" : { "$last" : "$date" } } },
{ "$out" : "temp-for-csv" }
])
为了只获取每个文档的最后日期并将其输出到temp-for-csv集合中。
您可以使用$slice
投影运算符仅返回数组中的最后一个元素,但这在聚合中不可用,mongoexport仅采用查询规范,而不采用投影规范,因为假定使用--fields
和--fieldFile
选项足够了。 可能要求对mongoexport使用带有投影的查询是一个很好的功能请求。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.