MongoDB聚合 - $ project

时间:2015-12-17 05:09:35

标签: javascript mongodb meteor aggregation-framework

我试图将聚合$project阶段中的新字段的值设置为等于依赖于另一个变量的字段路径(不同日期的不同股票价格)。

我可以使用getPrice全局帮助程序调用此字段路径以在模板中使用,但我找不到允许我从聚合中的许多字段路径中进行选择的任何MongoDB管道运算符(我看到{{ 1}},只允许两个选项)。我还看到了如何计算新字段的值,但我的用例不需要任何计算,该值已存在于文档中。

Meteorpad显示了我更清楚的问题,但最相关的代码如下。我可以在$ project中将$cond的值设置为什么?谢谢。

dynamicPrice

[编辑:缩小文字以简化问题]

1 个答案:

答案 0 :(得分:0)

我能够使用$unwind来解决这个问题。全局帮助器getPrice实际上与聚合无关。在此处更新了Meteorpad

//Documents being aggregated
{
  ticker: "AAPL",
  eps: "9.20",
  lastPrice: "119.03",
  closingPrices: [
    {date: "2015-12-03", close: "115.20"},
    {date: "2015-12-04", close: "119.03"}
  ]
},
//...more documents

//Aggregation
var valuation = Valuations.findOne({_id: valuationId});
var valuationDate = valuation.valuationDate;

var pipeline = [
        {
          $unwind: "$closingPrices"
        },
        {
          $match: {
            "closingPrices.date": valuationDate
          }
        },
        {
          $project: {
            _id: 1,
            eps: 1,
            lastPrice: 1,
            dynamicPrice: "$closingPrices.close"
          }
        }
        //...$group stage with calculations