MongoDB在Aggregate函数中使用变量

时间:2015-12-05 17:24:47

标签: mongodb

我使用聚合创建了一个变量,并希望在另一个聚合函数中使用它,但似乎没有传递值。这是我原来的var:

xi = 0
args = (0,)
answer = spo.fmin(function, x0=xi, args=args)

现在我想在这个聚合函数中使用该var:

 var high_grades = db.grades.aggregate(
[
 {
   $group:
     {
       _id: "$name",
       score: { $max: "$score" },
     }
 }
,{ $sort: {score:-1}}
]
)

 var high_grades output
 { "_id" : "Pat", "score" : 97 }
 { "_id" : "Joe", "score" : 92 }
 { "_id" : "Ali", "score" : 89 }
 { "_id" : "Mo", "score" : 85 }

当我运行时,我没有收到任何错误,但这是我意想不到的结果:

var high_grades_adj = db.grades.aggregate(
[
 {
   $group:
     {
       _id: "$high_grades.id",
       score: { $sum: "$high_grades.score" },
     }
 }
]
)

1 个答案:

答案 0 :(得分:1)

您不应该在字段前添加$high_grades,如果您的集合中有一个名为$high_grades的字段,则只需执行此操作。请参阅下面的更正查询。请注意,我还将id更改为_id

var high_grades_adj = db.grades.aggregate(
[
 {
   $group:
     {
       _id: "$_id",
       score: { $sum: "$score" },
     }
 }
]
)