我必须在students集合中的一些文档中插入一个带有布尔值的新字段, struct 如下:

{
  _id: ObjectId("61c9cffcf9b7043141272c5b"),
  createdAt: 2021-12-27T14:38:52.025Z,
  updatedAt: 2022-07-26T10:12:56.887Z,
  deletedAt: null,
  fullName: 'Karina Kuznetsova',
  address: 'Chicago IL',
  Major:'Computer Science',
  __v: 0,
}

我在Mongo Compass的本地MongoSH中运行以下查询:

db.students.aggregate([
    {
        $match: { 
            "_id": ObjectId('61c9cffcf9b7043141272c5b')
        }
    },
    {
        $set: { "transferred": true }
    }   
]);

我希望将该字段添加到文档中,如下所示:

{
  _id: ObjectId("61c9cffcf9b7043141272c5b"),
  createdAt: 2021-12-27T14:38:52.025Z,
  updatedAt: 2022-07-26T10:12:56.887Z,
  deletedAt: null,
  fullName: 'Karina Kuznetsova',
  address: 'Chicago IL',
  Major:'Computer Science',
  __v: 0,
  transferred: true
}

但是,原始文档保持不变,没有transferred字段.

Option 2

我也试过这种方式:

const studentsList = db.students.find({
    "_id": ObjectId('61c9cffcf9b7043141272c5b')
});

studentsList.forEach(student => {
    const result = db.students.updateOne(
        { _id: student._id },
        {
            $set: { "transferred": true }
        });
});

我做错了什么?

推荐答案

请改用update函数来更新文档.

函数aggregate用于返回查询到的文档,但不会更新集合中的现有文档.

db.students.update(
    {
        _id: ObjectId('61c9cffcf9b7043141272c5b')
    },
    {
        $set: { "transferred":true }
    });

Mongodb相关问答推荐

使用mongosh将大型json文件插入到mongo集合中

Mongo如何找到字段排除特殊字符

如何限制/筛选子文档中的条目?

MongoDB通过查找具有多个数组的对象进行聚合

如何在MongoDB中通过限制和跳过查找项进行匹配

如何将空值单独分组?

Mongodb,在一个查询中用正则表达式更新部分字符串

Mongodb聚合查找连接两个对象字段的集合数组匹配对象索引字段的总和

如何在 mongodb golang 的单个更新调用中使用 $set 和 $inc?

MongoDB 查询以包含多个字段的最常见值的计数

Mongo C#忽略属性

MongoError:$subtract 累加​​器是一元运算符

Meteor 中的平均聚合查询

mongodb中类型不相等的查询

MongoDB - 聚合 - 获取数组中的唯一项

Ruby 按键值分组哈希

Mongodb - 如何在多个字段中查找字符串?

使用 $in 进行不区分大小写的搜索

通过浏览器连接mongodb?

Mongodb 查找除一两个条件之外的所有内容