具有节点js的mongo db无法对字符串对象

时间:2017-09-13 11:33:39

标签: javascript node.js mongodb

所以我在mongo db中有这种类型的文件。

    {
        "_id" : ObjectId("599ccc896f16e74a3e26f1a9"),
        "timestamp" : ISODate("2017-08-22T17:14:59.000Z"),
        "header" : {
            "uniq_id" : "9951503422099.16801274",
            "request" : "GET /v1/api/payload"
            "username" : "user1",
            "data_length" : "201",
            "status" : "200"
        }
    },
{
        "_id" : ObjectId("599ccc896f16e74a3e26f1a9"),
        "timestamp" : ISODate("2017-08-22T17:15:59.000Z"),
        "header" : {
            "uniq_id" : "9951503422099.16801274",
            "request" : "GET /v1/api/payload"
            "username" : "user1",
            "data_length" : "301",
            "status" : "200"
        }
    }

在上面的文档中,data_length位于String 现在我要做的是将相似类型的用户名分组并添加他们的data_length并计算数据这是查询的样子

Model.aggregate([ {$match: {
            timestamp: {
                $gte: ISODate("2017-08-22T00:00:00.000Z"),
                $lt: ISODate("2017-08-22T23:59:00.000Z")
            }
        }},
        {
              $group: {_id: {"username": "$header.username", "request": "$header.request"},

                       response_size: {$sum :parseInt("$header.data_length")},
                       count: {$sum: 1}   
              }
        }
        ])

上述查询的结果如下所示

{
    "_id" : {
        "username" : "user1",
        "request" : "GET /v1/api/payload"
    },
    "response_size" : nan,
    "count" : 2.0
}

即使将parseInt放在data_length中,我得到的结果也是NaN。但是response_size应该来502 我怎样才能正确得到data_length的总和

1 个答案:

答案 0 :(得分:0)

为什么不直接将data_length字段更改为int(“data_length”:301而不是“data_length”:“301”)?在我看来,你的mongodb服务器没有配置为允许javascript脚本 - 默认情况下这是禁用的,需要启用。