I’m working on project using nesjts graphQl and mongoDb I made $lookup between three collection. the collection which is I want to return has 226 records every record contains a field of type array of object I want to get the data within this array so I used $unwind the problem here when I use $unwind to read the field the number of records increased to be 524 records and when I remove the $unwind I couldn’t return the data and I got this error
"message": "String cannot represent value: [\"Debit Mastercard\"]",
"locations": [
{
"line": 14,
"column": 7
}
],
Data I want to return :
{
_id: new ObjectId("632c711adc4f85eba1b74911"),
bReconcileError: 'true',
batchNumber: '1',
btransfered: 'true',
countryCode: '788',
currencyCode: '788',
merchantID: '458742236657711',
nSettlementAmount: '159800',
onlineMessageMACerror: 'false',
reconciliationAdviceRRN: '000104246913',
reconciliationApprovalCode: '',
settledTransactions: [ [Object] ],
settlementAmount: 'C000159800',
settlementDate: '220617',
settlementTime: '114110',
terminalID: '05000002',
traceNumber: '13',
uniqueID: '363bc047-4cff-4013-aaad-e608a59bbd4c'
},
Data inside the field settledTransactions
[
{
"appName": "Debit Mastercard",
"cardInputMethod": "INPUT_CHIP_CONTACT",
"cardPAN_PCI": "XXXXXXXXXXXX5545",
"networkName": "MASTERCARD",
"onlineApprovalCode": "846022",
"onlineRetrievalReferenceNumber": "000102846022",
"transactionAmount": "000000069000",
"transactionDate": "220613",
"transactionTime": "110016",
"transactionType": "TRANSACTION_TYPE_PURCHASE"
}
],
Here is the function :
async getSettlementsByUser(role: string, name: string) {
let settlement = await this.profileModel.aggregate([
{
$match: {
bindedSuperAdmin: name,
},
},
{
$lookup: {
from: 'tpes',
localField: 'nameUser',
foreignField: 'merchantName',
as: 'tpesBySite',
},
},
{
$lookup: {
from: 'settlements',
localField: 'tpesBySite.terminalId',
foreignField: 'terminalID',
as: 'settlementsByUser',
pipeline: [
{
$sort: {
transactionDate: -1,
},
},
],
},
},
{ $unwind: '$tpesBySite' },
{ $unwind: '$settlementsByUser' },
{ $unwind: '$settlementsByUser.settledTransactions' },
{
$project: {
bReconcileError: '$settlementsByUser.bReconcileError',
batchNumber: '$settlementsByUser.batchNumber',
btransfered: '$settlementsByUser.btransfered',
countryCode: '$settlementsByUser.countryCode',
currencyCode: '$settlementsByUser.currencyCode',
merchantID: '$settlementsByUser.merchantID',
nSettlementAmount: '$settlementsByUser.nSettlementAmount',
onlineMessageMACerror: '$settlementsByUser.onlineMessageMACerror',
reconciliationAdviceRRN:
'$settlementsByUser.reconciliationAdviceRRN',
reconciliationApprovalCode:
'$settlementsByUser.reconciliationApprovalCode',
settledTransactions: [
{
appName: '$settlementsByUser.settledTransactions.appName',
cardInputMethod:
'$settlementsByUser.settledTransactions.cardInputMethod',
cardPAN_PCI:
'$settlementsByUser.settledTransactions.cardPAN_PCI',
networkName:
'$settlementsByUser.settledTransactions.networkName',
onlineApprovalCode:
'$settlementsByUser.settledTransactions.onlineApprovalCode',
onlineRetrievalReferenceNumber:
'$settlementsByUser.settledTransactions.onlineRetrievalReferenceNumber',
transactionAmount:
'$settlementsByUser.settledTransactions.transactionAmount',
transactionDate:
'$settlementsByUser.settledTransactions.transactionDate',
transactionTime:
'$settlementsByUser.settledTransactions.transactionTime',
transactionType:
'$settlementsByUser.settledTransactions.transactionType',
},
],
settlementAmount: '$settlementsByUser.settlementAmount',
settlementDate: '$settlementsByUser.settlementDate',
settlementTime: '$settlementsByUser.settlementTime',
terminalID: '$settlementsByUser.terminalID',
traceNumber: '$settlementsByUser.traceNumber',
uniqueID: '$settlementsByUser.uniqueID',
},
},
]);
console.log('settlement from service ', settlement);
return settlement;
Anyone could help me in this please ?