繁体   English   中英

具有节点js的mongo db无法对字符串对象运行总和查询

[英]mongo db with node js not able to run sum query on string object

所以我在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的总和

为什么不只将data_length字段更改为int类型(“ data_length”:301而不是“ data_length”:“ 301”)? 在我看来,您的mongodb服务器未配置为允许JavaScript脚本-默认情况下已禁用,需要启用它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM