为什么我的 mongodb 聚合计数以小数形式返回?

以下查询

db.getcollection("xyzCollection").aggregate(
    [
     { $match:
           { "startDate": { $gte: ISODate("2021-01-21T00:00:00.000+0000") },"markets": { $exists: true }} 
     },{ $group: 
           { _id: "$sportName","count": { $sum: 1 } }
     },]
)

返回以下输出:

{ 
    "_id" : "Ice Hockey","count" : 138.0
}
{ 
    "_id" : "Basketball","count" : 141.0
}
{ 
    "_id" : "Cricket","count" : 14.0
}
{ 
    "_id" : "Volleyball","count" : 32.0
}
{ 
    "_id" : "Football","count" : 685.0
}

这是为什么?我怎样才能让它返回一个int?我正在使用 Studio 3T 2020.10.1 来执行查询。我已经尝试过使用 $toInt(包装“1”或包装“{ $sum: 1 }”),但正如预期的那样,它不起作用 - 语法错误。

谢谢。

xcmk27 回答:为什么我的 mongodb 聚合计数以小数形式返回?

它将返回 int

Play

您可以在 $toInt 管道中使用 $project

{
 $project: {
   sum: {$toInt :"$count" } 
 } 
}

sample

我认为这是由于 Robo3t/Studio3t

感谢@wernfried reference 为这种行为辩护。

,

如果您的查询由 javascript 运行时执行(这是 ISODate 建议的用法,因为这不是 MQL 构造),呈现结果的(相同)运行时只有一种数字类型,它是浮点类型。

使用用另一种支持整数类型的语言编写/使用的工具。

本文链接:https://www.f2er.com/1068985.html

大家都在问