![](/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.