【发布时间】:2020-06-11 17:41:48
【问题描述】:
我正在寻找一个查询,它只能返回一个数组中的某个文档,该数组嵌入在主文档的另一个数组中。 下面是存储在 DB 中的集合:
{
"List": {
"_id": "5ee1c1e6739bb23e3c54d35c",
"capitalAccountID": "CaptialAccount-43",
"userEmail": "kumarshreyas073@gmail.com",
"flagID": 1,
"ledgerName": "Capital Account",
"subLedgers": [
{
"openingBalance": 100000,
"closingBalance": 90001,
"transactions": [
{
"_id": "5ee1c1e6739bb23e3c54d35e",
"transactionID": "123456",
"date": "09/06/2020",
"particulars": "By-sales",
"voucherNumber": "asdfghjk",
"voucherType": "SR",
"credit": 0,
"debit": 1
},
{
"_id": "5ee1c1e6739bb23e3c54d35f",
"transactionID": "123457",
"date": "10/06/2020",
"particulars": "By-sales",
"voucherNumber": "asdfghjk",
"voucherType": "SR",
"credit": 5000,
"debit": 0
},
{
"_id": "5ee1c1e6739bb23e3c54d360",
"transactionID": "123458",
"date": "11/06/2020",
"particulars": "By-sales",
"voucherNumber": "asdfghjk",
"voucherType": "SR",
"credit": 5000,
"debit": 0
}
],
"_id": "5ee1c1e6739bb23e3c54d35d",
"subLedgerID": 1,
"subLedgerName": "ABC",
"reference": "dghj",
"rateOfDuty": 10,
"gstApplicable": true
},
{
"openingBalance": 100000,
"closingBalance": 95001,
"transactions": [
{
"_id": "5ee1c1e6739bb23e3c54d362",
"transactionID": "123459",
"date": "13/06/2020",
"particulars": "By-sales",
"voucherNumber": "asdfghjk",
"voucherType": "SR",
"credit": 0,
"debit": 1
},
{
"_id": "5ee1c1e6739bb23e3c54d363",
"transactionID": "123450",
"date": "14/06/2020",
"particulars": "By-sales",
"voucherNumber": "asdfghjk",
"voucherType": "SR",
"credit": 5000,
"debit": 0
},
{
"_id": "5ee1c1e6739bb23e3c54d364",
"transactionID": "123451",
"date": "15/06/2020",
"particulars": "By-sales",
"voucherNumber": "asdfghjk",
"voucherType": "SR",
"credit": 5000,
"debit": 0
},
{
"_id": "5ee1c1e6739bb23e3c54d365",
"transactionID": "123452",
"date": "16/06/2020",
"particulars": "By-sales",
"voucherNumber": "asdfghjk",
"voucherType": "SR",
"credit": 0,
"debit": 5000
}
],
"_id": "5ee1c1e6739bb23e3c54d361",
"subLedgerID": 2,
"subLedgerName": "DEF",
"reference": "dohj",
"rateOfDuty": 10,
"gstApplicable": true
}
],
"idCounter": 43,
"__v": 0
}
}
下面的代码返回上面的结果:
await CaptialAccount.findOne(
{
userEmail: req.body.userEmail,
},
(err, list) => {
res.status(200).json({
List: list
})
}
);
我需要根据日期过滤“subLedgers”数组中的“transactions”数组。 例如:从“09/06/2020”到“13/06/2020”。 预期输出:
{
"List": {
"_id": "5ee1c1e6739bb23e3c54d35c",
"capitalAccountID": "CaptialAccount-43",
"userEmail": "kumarshreyas073@gmail.com",
"flagID": 1,
"ledgerName": "Capital Account",
"subLedgers": [
{
"openingBalance": 100000,
"closingBalance": 90001,
"transactions": [
{
"_id": "5ee1c1e6739bb23e3c54d35e",
"transactionID": "123456",
"date": "09/06/2020",
"particulars": "By-sales",
"voucherNumber": "asdfghjk",
"voucherType": "SR",
"credit": 0,
"debit": 1
},
{
"_id": "5ee1c1e6739bb23e3c54d35f",
"transactionID": "123457",
"date": "10/06/2020",
"particulars": "By-sales",
"voucherNumber": "asdfghjk",
"voucherType": "SR",
"credit": 5000,
"debit": 0
},
{
"_id": "5ee1c1e6739bb23e3c54d360",
"transactionID": "123458",
"date": "11/06/2020",
"particulars": "By-sales",
"voucherNumber": "asdfghjk",
"voucherType": "SR",
"credit": 5000,
"debit": 0
}
],
"_id": "5ee1c1e6739bb23e3c54d35d",
"subLedgerID": 1,
"subLedgerName": "ABC",
"reference": "dghj",
"rateOfDuty": 10,
"gstApplicable": true
},
{
"openingBalance": 100000,
"closingBalance": 95001,
"transactions": [
{
"_id": "5ee1c1e6739bb23e3c54d362",
"transactionID": "123459",
"date": "13/06/2020",
"particulars": "By-sales",
"voucherNumber": "asdfghjk",
"voucherType": "SR",
"credit": 0,
"debit": 1
}
],
"_id": "5ee1c1e6739bb23e3c54d361",
"subLedgerID": 2,
"subLedgerName": "DEF",
"reference": "dohj",
"rateOfDuty": 10,
"gstApplicable": true
}
],
"idCounter": 43,
"__v": 0
}
}
是否有查询来实现这一点? 谢谢。
【问题讨论】: