$在mongodb中添加两个字段值

时间:2018-05-29 12:06:19

标签: mongodb mongodb-query aggregation-framework pymongo

我正在尝试解决一个问题,我试图通过对Matches.ShippingCharge + Matches.PreownedPrice = Total进行$ add来计算总成本。

如果Matches.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'}

我想要的是具有$ add函数的Matches.ShippingCharge + Matches.PreownedPrice的总和,其中结果将是新的总字段。所以我的输出应该是这样的:

{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 :(得分:1)

您需要使用$add aggregation聚合来添加ShippingChargePreownedPrice字段

 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" ] } }}
            ])