$ добавить два значения поля в mongodb - PullRequest
0 голосов
/ 29 мая 2018

Я пытаюсь решить проблему, в которой пытаюсь рассчитать общую стоимость, добавив $ в Matches.ShippingCharge + Matches.PreownedPrice = Total.

Я мог бы сделать это легко, если бы соответствовал.ShippingCharge был всего $ ShippingCharge, но так как я извлекаю данные из коллекции 2, подход кажется другим, и я не уверен, как это сделать.

   gameresult = db.products.aggregate([
            {'$match': {'Platform':variable}},
            {'$lookup':{'from': 'vendorgames','localField': 'Product','foreignField': 'Product','as': 'Matches'}},
            {'$project': {'_id':0,'Product':'$Product','Price':'$Price','Matches.ShippingCharge':1,'Matches.PreownedPrice':1}}])

Когда я выполняю вышеуказанный запрос, мой результат так:

{u'Matches': [{u'ShippingCharge': 200, u'PreownedPrice': 2000}], u'Product': u'A Way Out', u'Price': u'2,499.00'}

Что мне нужно, так это сумма Matches.ShippingCharge + Matches.PreownedPrice с функцией $ add, где результатом будет новое общее поле.Таким образом, мой вывод должен быть таким:

{u'Matches': [{u'ShippingCharge': 200, u'PreownedPrice': 2000, u'Total': 2200 }], u'Product': u'A Way Out', u'Price': u'2,499.00'}

1 Ответ

0 голосов
/ 29 мая 2018

Для добавления полей ShippingCharge и PreownedPrice

 gameresult = db.products.aggregate([
            {'$match': {'Platform':variable}},

            {'$lookup':{'from': 'vendorgames','localField': 'Product','foreignField': 'Product','as': 'Matches'}},

            {'$project': {'_id':0,
                'Product':'$Product',
                'Price':'$Price',
                'Matches.ShippingCharge':1,
                'Matches.PreownedPrice':1,
                'total': { $add: [ "$Matches.ShippingCharge", "$Matches.PreownedPrice" ] } }}
            ])
необходимо использовать агрегацию $add aggregation
...