मेरा मानना है कि एग्रीगेशन ऑपरेटर्स जैसे sum
पैरामीटर के रूप में सटीक कॉलम नाम की अपेक्षा करें। आप project
. करने का प्रयास कर सकते हैं पहले गुणा करें, फिर परिणाम का योग करें:
DB::connection($this->MongoSchemaName)
->collection($this->InvoicesTable)
->where('ContactID', (int)$customer->ContactID)
->project([
'ContactID' => 1,
'TotalInBaseCurrency' => ['$multiply' => ['$Total', '$CurrencyRate']]
])
->sum('TotalInBaseCurrency')
या सीधे एकत्रीकरण का उपयोग करें:
DB::connection($this->MongoSchemaName)
->collection($this->InvoicesTable)
->raw(function($collection) use ($customer){
return $collection->aggregate([
['$match' => [
'ContactID' => (int)$customer->ContactID,
'Type' => 'PAYMENT'
]
],
['$group' => [
'_id' => '$ContactID',
'TotalInBaseCurrency' => [
'$sum' => ['$multiply' => ['$Total', '$CurrencyRate']]
]
]
]
]);
})