MongoDB : How to update a new field value according to existing field value in each document?

标签 mongodb mongodb-query document mongodb-update

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

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

我有这样的文档,我想获取本学期的值,并将其放入上学期(每个文档都不同),并将“本学期”设置为 0,以便我查看每个文档1个1,然后把本学期的值,一一放入上学期,这样项目效率很低。

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

最佳答案

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

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

Sample Mongo Playground

关于MongoDB : How to update a new field value according to existing field value in each document?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72223136/

相关文章:

node.js - 链接 Q.ninvoke 时出现类型错误

linux - 此版本的 MongoDB 太新,无法在现有数据文件上启动。尝试 MongoDB 4.2 或更早版本

mongodb - 如果未找到结果,则返回 null 默认值

mongodb - mongodb可以在插入数据时创建索引吗?

node.js - 升级到最新的mongodb

MongoDB 搜索 : exact match and diacritic insensitivity (avoid tokenizer)

node.js - SQL 'UNION ALL' 类似 MongoDB 中的实现

swift - 未调用 DidEndSendingToApplication

javascript - 当请求不是来自链接时,IE 上的 Document.referrer 问题

sql - 如果没有 JOIN,那么在文档数据库中处理数据的正确方法是什么?