查询数组中的嵌入式文档

时间:2018-08-14 06:14:48

标签: mongodb

架构:

{
    "Name" : "Ammulu",
    "Details" : [ 
        {
            "Date" : "2018-08-10",
            "Client" : "Mongo",
            "ChargeCode" : {
                "Test" : "2",
                "Analysis" : "1",
                "Meeting" : "3"
            }
        },
    {
            "Date" : "2018-08-11",
            "Client" : "Mongo",
            "ChargeCode" : {
                "Test" : "2",
                " Cod " : "1",
                "Meeting" : "3"
            }
        },
    {
            "Date" : "2018-08-12",
            "Client" : "Mongo",
            "ChargeCode" : {
                "Test" : "2",
                " Cod " : "1",
                "Meeting" : "3"
            }
        }
    ]
}

我想将此架构导出到csv文件中,我尝试了以下查询:

mongoexport --db sample --collection test --fields Name,Details.0.Date --query "{'Name':/Ammulu/)}" --type=csv --out C:\Users\home\Desktop\users.csv  

我得到以下输出:

Name      Details.0.Date

Ammulu     2018-08-10    

我想以这种格式导出模式,并且还检索详细信息数组中的所有日期

Name     Date            ChargeCode 

Ammulu   2018-08-10 Test : 2,  Analysis : 1, Meeting : 3

         2018-08-11 Test : 2,  Cod : 1, Meeting : 3

         2018-08-12 Test : 2,  Cod : 1, Meeting : 3

任何帮助,谢谢。

1 个答案:

答案 0 :(得分:0)

您可以使用聚合框架,以上述查询作为$match运算符来过滤文档,然后使用$out运算符将聚合管道返回的文档写入指定的集合中。

db.col.aggregate([
       { "$match": { "Name": "Ammulu" } },
       { "$unwind": "$Details" },
       { "$project": { "Name": 1, "Date": "$Details.Date", "ChargeCode": 
                       "$Details.ChargeCode", "_id": 0 } },
       { "$out": "out_data" }
])

此处导出为CSV mongoexport

mongoexport --db db_name --collection out_data --fields Name,Date,ChargeCode --type csv --out out_path