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

时间:2015-02-24 17:55:44

标签: javascript node.js mongodb mongoose

我有一个非常基本的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
})

并且它不会返回正确的数据,而是返回

[ { _id: null, count: 473 } ]

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

1 个答案:

答案 0 :(得分:2)

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

假设fieldcurrencyFrom之类的字符串,请替换

_id : '$' . field,

_id : '$' + field,