如何在mongodb上的根元素内创建一个数组

时间:2018-02-05 17:15:01

标签: arrays mongodb aggregation-framework

我在导入csv文件后修改了这些数据:

 {Main: {
    "Name" : "MainNAme1",
    "age" : "age1",
    "ge" :"ge1",
    {Crs:{[
           {Cr: {
                "_id" : ObjectId("5a75baada0f20bd4e612d480"),
                "Number" : 400,
                "Page" : 24,
                "DC" : "NE",
            }},
           {Cr: {
                "_id" : ObjectId("5a75baada0f20bd4e612d489"),
                "Number" : 300,
                "Page" : 14,
                "DC" : "100",
            }},
     ]}},
}}

我想知道如何在根元素中创建一个新数组,如下所示:

    {Main: {
    "Name" : "MainNAme1",
    "info":[{
        "age" : "age1",
        "ge" :"ge1",
     }],
    {Crs:{[
           {Cr: {
                "_id" : ObjectId("5a75baada0f20bd4e612d480"),
                "Number" : 400,
                "Page" : 24,
                "DC" : "NE",
            }},
           {Cr: {
                "_id" : ObjectId("5a75baada0f20bd4e612d489"),
                "Number" : 300,
                "Page" : 14,
                "DC" : "100",
            }},
     ]}},
}}

我正在使用聚合来修改它。

2 个答案:

答案 0 :(得分:1)

关闭你的OP。您希望将agege移动到自己的数组中。您可以在$addToSet阶段

期间使用$group

尝试将此添加到您的$group pipline:

"Info" : { $addToSet : { "age": "$age", "ge" : "$ge" } } }}

输出

"Info" : [ 
    {
        "age" : "age1",
        "ge" : "ge1"
    }]

答案 1 :(得分:0)

您正在寻找从MongoDB v3.4开始提供的$addFields阶段。在此之前,您需要使用$project

db.collection.aggregate({
    $addFields: {
        "info": [{
            "age": "$Main.age",
            "ge": "$Main.ge"
        }]
    }
})