Mongo Aggregation自引用对象操作

时间:2016-05-27 00:44:26

标签: mongodb aggregation-framework

我需要在mongo中执行聚合操作,这需要访问在查询时未知的字段名称。这是一个示例数据集:

{
  leader: 'bob',
  members: {
    bob: 5.7,
    alice: 8.2,
    charlie: 2.1
  },
  score: 9
},
{
  leader: 'fred',
  members: {
    june: 5.7,
    daisy: 8.2,
    fred: 2.1
  },
  score: 3
},
{
  leader: 'tuna',
  members: {
    bob: 0.7,
    alice: 1.2,
    tuna: 2.1
  },
  score: 4
}

我需要能够通过团队得分来增加团队领导得分。因此,例如,第一个数据点将是bob(5.7)X得分(9)。领导者名称在leader字段中声明。不幸的是,我在聚合框架中使用变量字段名称的尝试都失败了。预期的输出将是:

{
  score: 51.3
},
{
  score: 6.3
},
{
  score: 8.4
}

到目前为止我尝试过哪些表达方式:

'$members[bob]' => null
'$members.bob' => 5.7, but we can't hardcode this as bob is unknown
'$members[$leader]' => null
'$members.$leader' => $ name exception error
'$members.$$CURRENT.leader' => $ name exception error
'$members[$$CURRENT.leader]' => null

我怀疑可能会有一些聪明的投射来解决这个问题,或者也许$ let可以做一些神奇的事情,但我不太熟悉$ let想出办法。

0 个答案:

没有答案