Javascript 如何对数据库中的已筛选组执行映射缩减?

Javascript 如何对数据库中的已筛选组执行映射缩减?,javascript,sql,rethinkdb,reql,Javascript,Sql,Rethinkdb,Reql,我有一张由Robinhood库存订单组成的表。相关字段包括: 侧边(购买或出售) 状态(我只寻找已填写的订单) 价格(订单的平均美元价格) 数量(出售或购买的股份数量) 我只是想了解我的订单历史中每种股票的历史损益 我有以下工作查询,它告诉我所有销售订单的价格,按股票符号分组: r.db('robinhood').table('orders').filter({side: 'sell', state: 'filled'}) .map(function(order) { return {

我有一张由Robinhood库存订单组成的表。相关字段包括:

侧边
(购买或出售)
状态
(我只寻找
已填写的
订单)
价格
(订单的平均美元价格)
数量
(出售或购买的股份数量)

我只是想了解我的订单历史中每种股票的历史损益

我有以下工作查询,它告诉我所有销售订单的价格,按股票符号分组:

r.db('robinhood').table('orders').filter({side: 'sell', state: 'filled'})
 .map(function(order) { 
   return {
     cost: (order('price').coerceTo('number')).mul(order('quantity').coerceTo('number')),
     symbol: order('symbol')
   }
}).group('symbol').sum('cost')
这将返回如下内容:

[{"group":"AA","reduction":491},{"group":"AAPL","reduction":10589},{"group":"ABEO","reduction":7596.16},...]
显然,我可以对
BUY
端执行相同的查询,这将告诉我所有采购订单的总成本(理论上,我可以从之前的
SELL
值中减去这个值)

简言之,如何使用一个需求查询,从每个股票符号的
SELL
订单总值中减去每个股票符号的
BUY
订单总值?


谢谢您的时间。

您可以尝试将购买订单的反向价值添加到您的金额中:

r.db('robinhood').table('orders').filter({state: 'filled'})
 .map(function(order) { 
   return {
     cost: order('price').coerceTo('number')
           .mul(order('quantity').coerceTo('number'))
           .mul(r.branch(order('side').eq('sell'), 1, -1)),
     symbol: order('symbol')
   }
}).group('symbol').sum('cost')