簡體   English   中英

mongoexport 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM