这是我的问题:
db.log.aggregate([{
$match: {
"meta.userId": {
$exists: true,
$ne: null
},
"timestamp": {
$gte: ISODate("2016-01-01"),
$lte: ISODate("2016-01-07")
}
}
}, {
$group: {
_id: "$meta.userId",
count: {
$sum: 1
}
}
}])
在聚合管道中使用{ $sum: 1 }
时,shell会返回 double 。我希望直接返回整数,因为它只是一个文档计数。
{
"result" : [
{
"_id" : "foo",
"count" : 46.0000000000000000
},
{
"_id" : "foo1",
"count" : 146.0000000000000000
}
],
"ok" : 1.0000000000000000
}
我知道如何改变总和的类型吗?
我的MongoDB版本是3.0.7。我使用Robomongo 0.8.5。
谢谢!
答案 0 :(得分:3)
您可以使用1
明确指定值NumberInt
是一个整数,请参阅此JIRA票证。在MongoDB shell中运行类似查询时通常不需要这样做,因此这可能是Robomongo的一个功能。
db.log.aggregate([{
$match: {
"meta.userId": {
$exists: true,
$ne: null
},
"timestamp": {
$gte: ISODate("2016-01-01"),
$lte: ISODate("2016-01-07")
}
}
}, {
$group: {
_id: "$meta.userId",
count: {
$sum: NumberInt(1)
}
}
}])