MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Laravel 5 Красноречива сума от умножени колони за mongo DB

Вярвам, че операторите за агрегиране като 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']]
                    ]
                ]
            ]
        ]);
    })



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB геопространствен индекс на масив (multikey + geospatial)

  2. Mongodb upsert хвърля DuplicateKeyException

  3. как да актуализирате обект от mLab колекция с помощта на _id

  4. MongoDB - Геопространствено пресичане на два полигона

  5. mongoengine +django как да преброим броя на елементите с едно и също съдържание