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

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

本文关键字:查询 变量 mongoose node js      更新时间:2024-04-20

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

所以我错过了一些显而易见的东西。

Javascript使用加号进行串联,而不是句点。

假设field是类似于currencyFrom的字符串,则替换

_id : '$' . field,

带有

_id : '$' + field,