【发布时间】:2021-03-24 06:23:09
【问题描述】:
我有这样的 MongoDB 命令:
db.transaction.aggregate([
{
"$match":
{
$and:[{
'is_deleted': false,
'createdAt':{'$gte': ISODate('2020-09-01T00:00:00.000Z'),'$lte':ISODate('2020-12-15T00:00:00.000Z')},
'type': 'deposit'
}
]
}
},
{
$group: {
_id: null ,
depositRevenue: {$sum: "$amount"}
}
}
]).pretty();
输出如下:
{
"_id" : null,
"depositRevenue" : 324
}
查询很好,但是当我传入 NodeJS 时它不起作用。 Bellow 是我在 ExpressJS 和 Mongoose 中的代码。
let revenueData = await Transaction.aggregate([
{
$match: {
$and: [{objFind}]
}
},
{
$group: {
_id: null,
totalRevenue: {$sum: "$amount"}
}
}
]);
objFind 像这样:
var startDate = new Date(req.query.startDate).toISOString();
var endDate = new Date(req.query.endDate).toISOString();
var objFind = {};
objFind["is_deleted"] = false;
if(startDate != undefined || endDate != undefined){
objFind["createdAt"] = {};
if(startDate != undefined){
objFind["createdAt"]["$gte"] = startDate;
}
if(endDate != undefined){
objFind["createdAt"]["$lte"] = endDate;
}
}
objFind['type'] = 'deposit';
请看一看。谢谢你
【问题讨论】:
标签: node.js mongodb mongoose aggregation-framework aggregate