将硬编码属性添加到json输出

时间:2015-04-08 07:43:31

标签: json mongodb mongodb-query

这是mongodb中的代码:。

db.mydb.aggregate([ 
    { "$group": {
        "_id": {
            "A": "$A",
            "B": "$B",
            "C": "$C"
        },

    }},
    { "$group": {
        "cpt": { '$sum': 1 } ,
        "_id": "$_id.A",
        "allowDrag": {'$literal':false},
        "expanded": {'$literal':false},
        "children": { 
            "$push": { 
                "text": "$_id.B",
                "details": "$_id.C",
                 "leaf": {'$literal': true},

            }
        },


    }}
])

我想在我的json输出中添加一些硬编码属性和值,它可以与

一起使用
  

" leaf":{' $ literal':true}

但我不知道为什么我无法用

制作它
  

" allowDrag":{' $ literal':false},               "扩展":{' $ literal':false}

是否可以使用$ group?

输出json的示例:

"result" : [ 
        {
            "_id" : "A",
            "cpt" : 1,
            "children" : [ 
                {
                    "text" : "B",
                    "details" : "C",
                    "leaf" : true
                }
            ]
        }]

我希望我输出json的示例:

"result" : [ 
        {
            "_id" : "A",
            "cpt" : 1,
            "allowDrag" : false,
            "expanded" : false,
            "children" : [ 
                {
                    "text" : "B",
                    "details" : "C",
                    "leaf" : true
                }
            ]
        }]

1 个答案:

答案 0 :(得分:2)

使用$literal管道中的$project运算符将新字段设置为布尔值false:

db.mydb.aggregate([ 
    { 
        "$group": {
            "_id": {
                "A": "$A",
                "B": "$B",
                "C": "$C"
            }
        }
    },
    { 
        "$group": {
            "cpt": { '$sum': 1 } ,
            "_id": "$_id.A",        
            "children": { 
                "$push": { 
                    "text": "$_id.B",
                    "details": "$_id.C",
                    "leaf": {'$literal': true}    
                }
            }
        }    
    },
    {
         "$project": { 
             "allowDrag": {'$literal':false},
             "expanded": {'$literal':false},
             "cpt": 1,
             "children": 1 
         }       
    }
])

使用以下集合示例进行测试:

db.mydb.insert([
    {
        "A": "test1",
        "B": "test2",
        "C": "test3"
    },
    {
        "A": "test1",
        "B": "test2",
        "C": "test2"
    },
    {
        "A": "test2",
        "B": "test2",
        "C": "test3"
    },
    {
        "A": "test2",
        "B": "test2",
        "C": "test3"
    }
])

以上聚合给出以下结果:

/* 0 */
{
    "result" : [ 
        {
            "_id" : "test1",
            "cpt" : 2,
            "children" : [ 
                {
                    "text" : "test2",
                    "details" : "test2",
                    "leaf" : true
                }, 
                {
                    "text" : "test2",
                    "details" : "test3",
                    "leaf" : true
                }
            ],
            "allowDrag" : false,
            "expanded" : false
        }, 
        {
            "_id" : "test2",
            "cpt" : 1,
            "children" : [ 
                {
                    "text" : "test2",
                    "details" : "test3",
                    "leaf" : true
                }
            ],
            "allowDrag" : false,
            "expanded" : false
        }
    ],
    "ok" : 1
}