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

标签 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 } ]

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

最佳答案

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

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

_id : '$' . field,

_id : '$' + field,

关于javascript - 如何在 mongoose/node.js 的聚合查询中使用变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28702884/

相关文章:

javascript - 如何用相同数量的空格替换匹配的字符

javascript - 在不同屏幕分辨率下测试网页时如何调整网页大小以适应窗口?

php - JQUERY getJSON/ajax 响应未处理

javascript - 语法错误 : Unexpected token Node js tutorial

node.js - Nodejs网站在后台执行

java - 将实体类对象列表转换为 JavaPairRDD

python - 如何为 python 单元测试模拟 mongodb?

javascript - 仅在 Safari 浏览器中未触发 Keyup 事件?

javascript - javascript中new赋值和直接赋值有什么区别?

c# - 在 InsertOneAsync() 之后立即替换 OneAsync() 并不总是有效,即使在记录日志时也是如此