1

これが私のクエリです:

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
        }
    }
}])

集計パイプラインで使用すると、シェルはdouble{ $sum: 1 }を返します。ドキュメントの数だけなので、整数を直接返したいと思います。

{
"result" : [ 
    {
        "_id" : "foo",
        "count" : 46.0000000000000000
    }, 
    {
        "_id" : "foo1",
        "count" : 146.0000000000000000
    }
],
"ok" : 1.0000000000000000
}

sum のタイプを変更する方法について何か考えはありますか?

私の MongoDB のバージョンは 3.0.7 です。ロボモンゴ0.8.5を使用しています。

ありがとうございました!

4

1 に答える 1

3

を使用して値1が整数であることを明示的に指定できます。NumberIntこのJIRAチケットを参照してください。これは通常、MongoDB シェルで同様のクエリを実行する場合には必要ないため、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)
        }
    }
}])
于 2016-01-08T10:09:22.417 に答える