我有这样的 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';
请看一下。谢谢