mongodb的产品是否等于总和$ sum

时间:2016-09-14 08:40:25

标签: mongodb mongodb-query aggregation-framework

我正在尝试计算mongodb中股票组合的累积回报,理想情况下可以使用累计$ product累加器

例如如果我有三个文件,其中一个值为0.5,则下一个为0.6,最后一个为0.7

我可以使用聚合累加器$sum轻松计算总和。这将给出 0.5 + 0.6 + 0.7

我想要做的是计算这些值的累积乘积( $ product ),即 0.5 * 0.6 * 0.5 ?这可以直接完成吗?我必须使用日志吗?

文档结构类似于以下

{
   "date" : 2015-12-31T15:50:00.000Z,
   "time" : 1550,
   "aum"  : 1000000,
   "basket" :[
   {
     "_id" : "Microsoft",
     "return" : 0.03,
     "shares" : 10,
     "price"  : 56.53,
     "fx"     : 1.0
   },
   .
   .
   .
   {
     "_id" : "GOOG.N",
     "return" : 0.05,
     "shares" : 20,
     "price"  : 759.69,
     "fx"     : 1.0
   }

2 个答案:

答案 0 :(得分:2)

您可以使用$multiply (aggregation)

> db.stocks.aggregate( {$project: { total: { $multiply: [ 0.5,0.6,0.5 ] } }} )

<强>更新

这将在单独的文件中计算每种股票的产品:

> var total=1;db.stocks.find().forEach(function(doc){total=total*doc.stock;})
> total

答案 1 :(得分:-3)

你需要使用$ multiply而以下是一个示例查询

db.stocks.aggregate([{total:{$ multiply:[“$ price”,“$ quantity”]}}])