MongoDB:如何根据每个文档中的现有字段值更新新的字段值?



我正在做一个项目,它目前要遍历每个文档来编辑字段,并且滞后很多。

{ "Name" : "Susie" , "This Semester" : 10 , "Last Semester" : 0 }
{ "Name" : "John" , "This Semester" : 20 , "Last Semester" : 0 }
...

我有这样的文档,我想把这学期的值,放到上学期(每个文档的值都不一样),做成&;this semester&;到0,我逐一浏览每个文档,然后取本学期的值,一个接一个地把它放在上学期,这使得项目非常低效。

有没有办法一次更新所有的文档?

使用聚合管道执行更新,以允许从其他字段获取值。

db.collection.update({},
[
{
$set: {
"Last Semester": {
$getField: "This Semester"
},
"This Semester": 0
}
}
])

Mongo Playground示例

db.collection.find().forEach(function (item){
item.LastSemester = item.ThisSemester;
item.ThisSemester = 0;
db.collection.save(item)});

试试这个片段

最新更新