我需要在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想出办法。