如何在 mongoose/node.js 中的聚合查询中使用变量

How to use a variable in an aggregate query in mongoose/node.js

我有一个非常基本的 Mongoose 聚合查询

Transaction.aggregate().match({
    timestamp : {
        $gt : time_lower_bound,
        $lt : time_upper_bound
    }
}).group({
    _id : '$currencyFrom',
    count : {
        $sum : 1
    }
}).sort({
    count : -1
})

我想让 _id 动态化。但是我试过了

var field = job.data.field;
Transaction.aggregate().match({
    timestamp : {
        $gt : time_lower_bound,
        $lt : time_upper_bound
    }
}).group({
    _id : '$' . field,
    count : {
        $sum : 1
    }
}).sort({
    count : -1
})

它 return 不是正确的数据,它 return 是

[ { _id: null, count: 473 } ]

所以我在这里遗漏了一些明显的东西。

Javascript 使用加号连接,而不是句点。

假设field是一个类似currencyFrom的字符串,替换

_id : '$' . field,

_id : '$' + field,