Я разрабатываю api на nodejs. У меня есть документ в следующей структуре:
{
"_id" : ObjectId("5ecd26504df3372a38afffd9"),
"balance" : 104000,
"bankID" : "Bank-1",
"userEmail" : "kumarshreyas073@gmail.com",
"bankName" : "Corporation Bank",
"accountNumber" : "03214569874563",
"ifsCode" : "CORP0001236",
"branch" : "Udupi",
"address" : "Udupi",
"city" : "Udupi",
"state" : "Karnataka",
"openingBalance" : 100000,
"transactions" : [
{
"credit" : 2000,
"debit" : 0,
"_id" : ObjectId("5ecd26614df3372a38afffea"),
"transactionID" : "CashTransaction-5ecd26614df3372a38afffe8",
"date" : "30-05-2026",
"particulars" : "By Cash-1",
"voucherType" : "Cash"
},
{
"credit" : 0,
"debit" : 2000,
"_id" : ObjectId("5ecd272d4df3372a38b00012"),
"transactionID" : "Receipt-5ecd272d4df3372a38b00009",
"date" : "29-07-2020",
"particulars" : "To Suresh kumar",
"voucherType" : "Receipt"
},
{
"credit" : 0,
"debit" : 2000,
"_id" : ObjectId("5ecd272d4df3372a38b00014"),
"transactionID" : "Receipt-5ecd272d4df3372a38b00003",
"date" : "30-05-2024",
"particulars" : "To Karthik",
"voucherType" : "Receipt"
}
],
"idCounter" : 1,
"__v" : 0
}
Мне нужно извлечь только те транзакции между from date = «20/07/2020» и до date = «31/07/2020».
Код, который я написал, выглядит следующим образом:
exports.trail_balance = async (req, res, next) => {
var trailBalance = {
userEmail: req.body.userEmail,
fromDate: req.body.fromDate,
toDate: req.body.toDate,
};
var bankAccount = await Bank.aggregate([
{ $match: { userEmail: req.body.userEmail } },
{
$addFields: {
transactions: {
$filter: {
input: "$transactions",
as: "transactions",
cond: {
$and: [
{
$gte: ["$$transactions.date", trailBalance.fromDate],
},
{
$lte: ["$$transactions.date", trailBalance.toDate],
},
],
},
},
},
},
},
]);
res.status(200).json({
result: 1,
bankAccount: bankAccount.length > 0 ? bankAccount : [],
});
};
Фактический результат, который я ожидаю, будет:
{
"result": 1,
"bankAccount": [
{
"_id": "5ecd26504df3372a38afffd9",
"balance": 104000,
"bankID": "Bank-1",
"userEmail": "kumarshreyas073@gmail.com",
"bankName": "Corporation Bank",
"accountNumber": "03214569874563",
"ifsCode": "CORP0001236",
"branch": "Udupi",
"address": "Udupi",
"city": "Udupi",
"state": "Karnataka",
"openingBalance": 100000,
"transactions": [
{
"credit" : 0,
"debit" : 2000,
"_id" : ObjectId("5ecd272d4df3372a38b00012"),
"transactionID" : "Receipt-5ecd272d4df3372a38b00009",
"date" : "29-07-2020",
"particulars" : "To Suresh kumar",
"voucherType" : "Receipt"
}
],
"idCounter": 1,
"__v": 0
}
Но я получаю все транзакции. Я даже попытался передать дату, from date = "20-07-2020" и to date = "31-07-2020". Это тоже возвращает всю транзакцию.
Все данные, хранящиеся в БД, имеют тип String.