[英]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.