我正在尝试计算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
}
答案 0 :(得分:2)
> 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”]}}])