Mongodb 是否可以对集合执行聚合并更新同一集合?

Mongodb 是否可以对集合执行聚合并更新同一集合?,mongodb,mongodb-query,aggregation-framework,mongodb-java,Mongodb,Mongodb Query,Aggregation Framework,Mongodb Java,这些是我收藏的文件。 使用中建议的管道查询 我可以使用此查询投影字段的总和: { "_id" : 1, "quizzes" : [ 10, 6, 7 ], "labs" : [ 5, 8 ], "final" : 80, "midterm" : 75 ,"extraMarks":10} { "_id" : 2, "quizzes" : [ 9, 10 ], "labs" : [ 8, 8 ], "final" : 95, "midterm" : 80 } { "_id" : 3, "quizz

这些是我收藏的文件。 使用中建议的管道查询

我可以使用此查询投影字段的总和:

{ "_id" : 1, "quizzes" : [ 10, 6, 7 ], "labs" : [ 5, 8 ], "final" : 80, "midterm" : 75 ,"extraMarks":10}
{ "_id" : 2, "quizzes" : [ 9, 10 ], "labs" : [ 8, 8 ], "final" : 95, "midterm" : 80 }
{ "_id" : 3, "quizzes" : [ 4, 5, 5 ], "labs" : [ 6, 5 ], "final" : 78, "midterm" : 70 }

现在我们必须更新students集合一个名为total的新字段,该字段类似于上述投影中的考试总计?

简单明了:否。@MarkusWMahlberg实际上这取决于“否”的含义。您可以迭代光标结果,并使用“批量”更新文档操作。@user3100115这是不言而喻的,基本上与“如果我获取数据并插入它,它将被插入”的参数相同。如果我可以请你注意“在上面的投影中?”
db.students.aggregate([ { "$project": { "final": 1, "midterm": 1, "examTotal": { "$add": [ "$final", "$midterm", { "$ifNull": [ "$extraMarks", 0 ] } ] } } }]);