所以我在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
的总和
答案 0 :(得分:0)
为什么不直接将data_length字段更改为int(“data_length”:301而不是“data_length”:“301”)?在我看来,你的mongodb服务器没有配置为允许javascript脚本 - 默认情况下这是禁用的,需要启用。